c new和delete簡單探索

2021-09-26 04:14:11 字數 1885 閱讀 3918

使用標準庫函式operator new或者operator new在堆記憶體中分配出一塊足夠大的記憶體

呼叫相應的建構函式構造出物件並賦初值,物件安排在步驟1的記憶體上(定位new)

返回指向這塊記憶體的指標

呼叫物件的析構函式

呼叫標準庫函式operator delete或者operator delete釋放空間。

在new分配記憶體失敗後會呼叫new-handler處理:new_handler介紹

// 預設是static的

void

* operator new

( std::

size_t count )

;void

* operator new[

]( std::

size_t count )

;

class base 

~base()

void

* operator new

(size_t p)

static

void operator delete

(void

*p)}

;int

main()

知識點:

void

* operator new

(std::

size_t

,void

*pmemory)

throw()

;

static

void

*operator new

(std::

size_t size, std::ostream &logstream)

throw

(std::bad_alloc)

;static

void operator delete

(void

*pmemory, std::ostream &logstream)

throw()

;classa *ca =

new(std::cerr)

classa()

;// 以下是預設的operator new/delete

void

*operator new

(std::

size_t

)throw

(std::bad_alloc)

;// normal new

void operator delete

(void

*pmemory)

throw()

;void

*operator new

(std::

size_t

,void*)

throw()

;// placement new

void operator delete

(void

*pmemory,

void*)

throw()

;void

*operator new

(std::

size_t

,const std::

nothrow_t&)

throw()

;// nothrow new

void operator delete

(void

*pmemory,

const std::

nothrow_t&)

throw()

;

C new和delete的使用

new和delete已經完全包含malloc和free的功能,並且更強大 方便 安全。使用動態分配記憶體時不能忘記釋放記憶體,不要忘記出錯處理!下面先看new和delete的基本使用方法。複製 純文字新視窗 include using namespace std intmain 釋放記憶體 dele...

C New和Delete 用法知其然

new和delete都是c 常用關鍵字,但是內部原理著實不簡單,我此篇是站在淺學用之的角度來歸納其表面使用和淺層原理。如果想深入理解這兩個關鍵字我推薦一下這篇部落格 首先在用法明確幾點 1.他們是系統關鍵字。2.他的標準實現在c 標準標頭檔案是 include 實際上引用了的話會間接引用到 3.我們...

C new和delete的用法

對於計算機程式設計而言,變數和物件在記憶體中的分配都是編譯器在編譯程式時安排好的,這帶來了極大的不便,如陣列必須大開小用,指標必須指向乙個已經存在的變數或物件。對於不能確定需要占用多少記憶體的情況,動態記憶體分配解決了這個問題。new和delete運算子是用於動態分配和撤銷記憶體的運算子。一 new...