定位new運算子:new負責在堆中找到乙個足以滿足要求的記憶體塊,它讓你能夠指定要使用的位置。標頭檔案#include
#include
#define max 50
using namespace std;
char buff[max];
class justtest
~justtest()
};int _tmain(int argc, _tchar* argv)
上述程式中,pc1與pc4就是new定位運算子的指標,該指標指向的類就是在buff這個記憶體中。上述執行結果為
hello1 1
hello2 2
address of pc1:00c80688
address of pc2:00b392d8
hello4 4
hello3 3
address of pc3:00b3ca10
address of pc4:00c80688
destory of class:2
由上可以看到pc1與pc4的值是一樣的,因此new定位運算子定義的乙個新物件將會覆蓋用於第乙個物件的記憶體單元。在delete buff時不會呼叫pc1與pc4的析構函式。要呼叫只能顯示的呼叫,即pc1->~justtest()。在定義pc4時,可以按照下面定義:
pc4 = new(buff+sizeof(justtest))justtest("hello4",4);
定位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 的其...
定位new運算子
一般的new運算子負責在heap堆中找到乙個足以能夠滿足要求的記憶體塊。定位new運算子在標頭檔案中。定位new運算子直接使用傳遞給它的位址,它不負責判斷哪些記憶體單元已被使用,也不查詢未使用的記憶體塊。這將一些記憶體管理的負擔交給了程式設計師。下面用乙個簡單的程式來說明定位new的用法 inclu...