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。
//涉足尚淺,如有不當,歡迎指出