malloc:申請指定位元組數的記憶體。申請到的記憶體中的初始值不確定。
calloc:為指定長度的物件,分配能容納其指定個數的記憶體。申請到的記憶體的每一位(bit)都初始化為 0。
realloc:更改以前分配的記憶體長度(增加或減少)。當增加長度時,可能需將以前分配區的內容移到另乙個足夠大的區域,而新增區域內的初始值則不確定。
alloca:在棧上申請記憶體。程式在出棧的時候,會自動釋放記憶體。但是需要注意的是,alloca 不具可移植性, 而且在沒有傳統堆疊的機器上很難實現。alloca 不宜使用在必須廣泛移植的程式中。c99 中支援變長陣列 (vla),可以用來替代 alloca。
用於分配、釋放記憶體
malloc、free 使用
申請記憶體,確認是否申請成功
char *str = (char*) malloc(100);assert(str != nullptr);
釋放記憶體後指標置空
free(p);
p = nullptr;
delete/delete:也完成兩件事,先呼叫析構函式(清理資源),然後底層呼叫 free 釋放空間。
new 在申請記憶體時會自動計算所需位元組數,而 malloc 則需我們自己輸入申請記憶體空間的位元組數。
posted @
2019-03-29 13:49
douzujun 閱讀(
...)
編輯收藏
C C 記憶體分配
1 c c 記憶體分配 1 棧區 由編譯器自動分配和釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 一般由程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事。3 全域性 靜態 資料區 全域性變數和靜態變數的儲存是放在一塊...
C C 記憶體分配
記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置...
C C 記憶體分配
一 c c 記憶體分配 c c 語言中,記憶體主要分配在一下五個儲存區 1.棧 棧中儲存區域性變數以及函式實參,由編譯器負責分配釋放,函式結束,棧中資料失效。2堆 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由 os 分配方式類似於鍊錶。3全域性區 靜態區 存放全域性變數以及靜態變數...