malloc和free使用的一些注意事項

2021-10-24 14:25:55 字數 488 閱讀 5997

#include

malloc

只關心申請的記憶體大小,單位是位元組。

申請的是乙個連續的記憶體。該函式申請的一定是乙個連續的記憶體空間,可能申請到的記憶體比實際申請的大,也可能申請不到,若申請不到返回null,一定要用if語句判斷一下

返回值型別為指標型別,可以根據實際情況返回成所需要的的指標型別

顯式初始化。堆區不會自動在分配時做初始化的,包括清零。所以你要自己進行初始化。

free

void free(void *ptr);

函式的引數是ptr,指的是需要釋放的記憶體的起始位址,且次函式沒有返回值。

必須提供記憶體的起始位址。呼叫該函式時,必須提供記憶體的起始位址,不能只提供部分位址。必須儲存好malloc返回的指標值,如果丟失,則所分配的堆空間無法**,稱記憶體洩漏

mallloc和free配合使用,編譯器不負責動態記憶體的釋放,需要程式設計師自己釋放。

不允許重複釋放。

free只能釋放堆記憶體空間

malloc和free的實現

被人問到malloc和free的實現問題。我們知道malloc的呼叫形式如 type p type malloc n sizeof type free的呼叫形式如 free p 好了,問題來了,free函式,我們只給傳入乙個指標,沒有傳入記憶體塊的大小n,那麼編譯器怎麼知道要釋放多少位元組的記憶體,...

malloc和free的區別

1,malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。2,對於非內部資料型別的物件而言,光用maloc free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。由於malloc f...

malloc與free簡單使用

寫 肯定少不了與記憶體打交道,今天就來聊一聊malloc和free的簡單使用 malloc用來開闢記憶體,一般用sizeof來獲得這個型別的大小,還有malloc返回的是void 所以經常申請記憶體後需要強制型別轉換,下面來看乙個例子 include include intmain 當然這個記憶體不...