C++中new的三種使用方法


C++ 中new 有三種用法,分別是:plain new, nothrow new, placement new

 

plain new

1 void* operator new(std::size_t) throw(std::bad_alloc);  

2 void operator delete( void *) throw();

plain new在分配失敗的情況下,

拋出異常std::bad_alloc而不是返回NULL,

因此通過判斷返回值是否為NULL是徒勞的

 

nothrow new

1 void * operator new(std::size_t, const std::nothrow_t&) throw();

2 void operator delete(void*) throw();

nothrow new在失敗時,返回NULL

是不拋出異常的new的形式

 

placement new

1 void* operator new(size_t, void*);

2 void operator delete(void*, void*);

主要用途是反復使用一塊較大的動態分配的內存來構造不同類型的對象或者他們的數組。

placement new構造起來的對象或其數組

要顯示的調用他們的析構函數來銷毀

千萬不要使用delete。

 

 

 

//涉足尚淺,如有不當,歡迎指出


免責聲明!

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



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