注意malloc/free、new/delete、new/delete一定要匹配使用,否則可能出現記憶體洩漏甚至崩潰的問題小結
1、兩組函式都負責動態記憶體管理
2、malloc/free是c/c++標準庫的函式,而new/delete是c++操作符。
3、malloc/free只負責動態分配空間/釋放空間,而new/delete還會呼叫建構函式和析構函式進行初始化和清理
4、malloc/free需要手動計算型別大小且返回值為void*,new/dellete可自己計算型別大小,返回對應型別指標。
在使用new開闢乙個aa大小的空間時,我們打個斷點,按f11逐語句與f10逐過程就會跳到建構函式內部,並且在申請完畢後也輸出了建構函式內部的內容
在使用delete釋放時,在逐語句執行,最後我們發現可以輸出析構函式內部的語句。
我們通過記憶體可以看出在我們動態申請多個自定義型別大小的空間時,申請空間首位址之前的四個位元組中存放了我們所申請給定型別的個數,以
便在接下來的析構函式中使用
模擬實現new[count]
#define new_arr(ptr,type,n) \
do \
while (false);
模擬實現delete
#define delete_arr(ptr,type) \
do \
while (false);
C C 動態記憶體管理
一 c語言中動態記憶體管理方式 c語言中使用 malloc calloc realloc free進行記憶體的管理和釋放 1.malloc動態記憶體申請 int ptest int malloc 10 sizeof int 申請記憶體的方式 free 釋放 2.calloc 該函式會將申請的記憶體空...
C C 動態記憶體管理
c語言動態記憶體管理 malloc calloc realloc free int p1 int malloc sizeof int malloc返回值型別為void int p2 int calloc 1,sizeof int 動態分配並初始化為0 int p3 int realloc p1,si...
C C 動態記憶體管理
目錄 總結並剖析malloc free和new delete之間的關係和差異。剖析new delete和new delete做了什麼?實現new array delete array巨集,模擬實現new delete申請和釋放陣列 它們都是動態管理記憶體的入口。malloc free是c c 標準庫...