new有三種使用方式:plain new,nothrow new和placement new。
(1)plain new就是我們平常使用的普通的new運算子。
void* operator new(std::size_t) throw(std::bad_alloc)
void operator delete(void *) throw();
程式用例:
#include "stdafx.h"
#include using namespace std;
char *creatememory(unsigned long size)
int main()
; const nothrow_t nothrow;//nothrow作為new的標誌性啞元
測試程式:
#include "stdafx.h"
#include #include using namespace std;
char *creatememory(unsigned long size)
~base(){}
private:
char m_data;
};int main()
注:使用placement new構造起來的物件或陣列,要顯式呼叫它們的析構函式來銷毀(析構函式並不釋放物件的記憶體),千萬不要使用delete.這是因為placement new構造起來的物件或陣列大小並不一定等於原來分配的記憶體大小,使用delete會造成記憶體洩漏或者之後釋放記憶體時出現執行時錯誤。
C 中new三種用法
new operator new的表示式 string str new string abcde 既分配記憶體也初始化物件 operator new new的操作符 void buff operator new sizeof string 類似於malloc 只分配空間不進行初始化 placemen...
C 中new的三種用法
c 中new的用法有三種 兩大類 其一是new operator new表示式 其二是operator new new操作符 new表示式比較常見,也最常用,例如 new操作符類似於c語言中的malloc,它只是負責申請記憶體,但不負責記憶體塊的初始化。例如 這是new的第二種用法。new的第三種用...
C 中NEW的三種用法
總結c 中三種關於 new 的使用方法 雖然有三種new的用法,但是分為兩大類也未嘗不可,那麼是哪兩類呢?其一是new operator,也叫new表示式 其二是operator new,也叫new操作符。這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。new表示式比較常見,也最常用,例如...