new和delete的使用

2021-06-20 21:44:12 字數 1172 閱讀 5838

一、基本資料型別的動態分配

new和delete已經完全包含malloc和free的功能,並且更強大、方便、安全。使用動態分配記憶體時不能忘記釋放記憶體,不要忘記出錯處理!下面先看new和delete的基本使用方法。

#includeusing namespacestd;intmain ( )

//釋放記憶體deletei;deletej;deletef;deleteiarr; //注意陣列的刪除方法return0;

}

二、記憶體分配時的出錯處理

一般有2種處理方法,一是根據指標是否為空來判斷,一是用例外出錯處理所丟擲的「bad_alloc」來處理。

#include#includeusing namespacestd;intmain ( )

deletearr;

//例外出錯處理trycatch(bad_alloc xa)

//強制例外時不丟擲錯誤,這時必須要判斷指標double*ptr =new(nothrow)double[100000];if(!ptr)deleteptr;

cout << "記憶體分配成功!"

<< endl;return0;

}

三、用new產生類的例項

前面章節已經用了很多了。

#includeusing namespacestd;classclassaintgetx() 

};intmain ( )

cout << "x = "

<< p->getx() << endl;deletep; //呼叫析構函式return0;

}

New和delete的原理

new和delete的原理 當我們在程式中寫下 new 和 delete 時,我們實際上呼叫的是 c 語言內建的 new operator 和 delete operator.所謂語言內建就是說我們不能更改其含義,它的功能總是一致的。以 new operator 為例,它總是先分配足夠的記憶體,而後...

new 和delete的實現

通過了解發現,原來在new的內部實現中只涉及記憶體的分配,也就是只考慮malloc的使用,而關於呼叫建構函式的部分則是交由編譯器處理,所以這裡看不到呼叫建構函式的 由malloc分配記憶體空間,然後判斷是否分配,並發出bad alloc的異常訊息.如果分配成功,返回指向記憶體的指標,否則。返回nul...

C 中關於new和delete的使用

1.建立動態陣列 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道它的長度,陣列只在定義它的塊語句中存在。對於動態分配的陣列,雖然長度是固定的,但是動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才確定陣列長度 同時,動態分配的陣列一直存在直到程式顯示釋放為止,這樣,...