使用標準庫函式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...