malloc/free與new/delete
(1)new會拋異常,但是malloc不會拋異常;
(2)new/delete屬於操作符,但是malloc/free屬於函式;
(3)new申請空間的時候會呼叫建構函式進行初始化,malloc不會;
delete釋放記憶體時會呼叫析構函式,free只是切斷了指向關係;
malloc/calloc/realloc
malloc開闢空間時:若找不到,則返回null;
calloc:在記憶體中開闢空間並將其初始化為0;
realloc:重新開闢空間(1)當realloc開闢空間空間不足,找到新空間時:自動將原來指標所指向的內容拷貝到新空間,並且釋放原來的空間;(2)當realloc開闢空間且找不到時,原空間不變。
注:動態記憶體開闢的空間位於堆上;
delete釋放new 開闢的記憶體
直接看下面這道題 使用 char p new char 10 申請一段記憶體,然後使用delete p釋放,有什麼問題?a 會有記憶體洩露 b 不會有記憶體洩露,但不建議用 c 編譯就會報錯,必須使用delete p d 編譯沒問題,執行會直接崩潰 這道題題目開闢的是10個char型別的空間,因為是...
c 記憶體的開闢和釋放
關於new和delete,malloc和free。我們都知道,是在不同的語言裡面做相應的記憶體的開闢和釋放工作的,那麼這篇博文就來好好的了解一下他們的區別和工作原理吧 1 引言 首先,我們還是寫乙個我們經常使用的在c語言中動態開闢的方式 int main p 10 free p return0 其中...
動態開闢記憶體總結
動態開闢記憶體是在程式執行過程中進行開闢空間的,主要在堆,棧中開闢 有關堆中動態開闢記憶體空間的函式有malloc,calloc,realloc,free。棧中開闢空間的有alloca。void malloc size t size void calloc size tnum,size tsize ...