c 中new的三種用法詳解 清晰明了

2021-10-08 05:42:26 字數 838 閱讀 7456

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表示式比較常見,也最常用,例如...