C++ operator new和new operator的區別


new operator

當你寫這種代碼:

string *ps = new string("Memory Management");

你使用的new是new  operator

new操作符做兩件事,分配內存+調用構造函數初始化

 

operator new

你所能改變的是怎樣為對象分配內存

new操作符調用一個函數來完成必需的內存分配,你可以重寫或重載這個函數來改變它的行為。new操作符為分配內存所調用函數的名字operator new

operator new所了解的是內存分配,它對構造函數一無所知。

函數operator new 通常這樣聲明:

void * operator new(size_t size);

返回值類型是void*,由於這個函數返回一個未經處理(raw)的指針未初始化的內存。

參數size_t確定分配多少內存。

你能添加額外的參數重載函數operator new,可是第一個參數類型必須是size_t。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM