記憶體的動態開闢與釋放

2021-07-25 11:08:01 字數 417 閱讀 4177

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 ...