通常,new負責在堆(heap)中找到乙個足以能夠滿足要求的記憶體塊。new運算子還有一種變體,被稱為定位(placement)new運算子,它能讓我們向編譯器指定要使用的位置。
程式設計師可以使用這種特性來設定其記憶體管理規程,處理需要通過特定位址進行訪問的硬體或者在特定位置建立物件。
要使用這一特性,必須包含new標頭檔案(但實際上我發現沒有包含new也能執行成功)
#include
#include
#include
using
namespace std;
struct student
;int buffer1[20]
;char buffer2[
200]
;int
main()
輸出:
[running]
cd"d:\程式\隨筆程式\2023年1月\" && g++ new.cpp -o new && "d:\程式\隨筆程式\2023年1月\"new
9dgx
在常規方法中,我們只是能夠動態申請一段記憶體並返回指向它的乙個指標,使用定位new運算子之後,我們可以在自己指定的一段記憶體中動態申請,我們甚至還可以使用原有記憶體的位址來訪問我們新申請之後存入的值,比如上面程式中的語句:
cout << buffer1[0] << endl; cout << buffer2;
定位new運算子的原理就是,只是返回傳遞給它的位址,並將其強制轉換為void*
型別,以便於賦值給任何指標型別。
C 定位new運算子
定位new運算子,它讓你能夠指定要使用的位置,可能使用這種特性來設定其記憶體管理規程,處理需要通過特定位址進行訪問的硬體或在特定位置建立物件。1,標頭檔案 2,將new運算子用於提供了所需位址的引數。例如 程式中的buffer是char指標,如果要訪問buffer1,buffer2 的位址,需使用 ...
定位new運算子
通常,new 從堆中分配記憶體,但它還有另一種稱為 定位 placement new 運算子,它可以讓我們指定要使用的位置。可以通過這個特性來設定記憶體管 理規程,處理需要通過特定位址進行訪問的硬體或在特定位置建立物件。要使用定位 new 特性,需要包含標頭檔案 new。使用定位 new 運算子時,...
定位 new 運算子
定位 new 運算子 和普通的new 運算子在堆上隨機分配記憶體相比,定位 new 運算子可以在特定的位址位置 定位 new 運算子的具體使用例項 const int buf 512 const int n 5 char buffer buf void part9 newplace 定位new 的其...