一、記憶體申請
1.建議使用calloc申請記憶體,盡量不要使用malloc。
calloc在動態分配完記憶體後,自動初始化該記憶體空間為零,而malloc不初始化,裡邊資料是隨機的垃圾資料。
2.申請記憶體大小必須大於0.
(1)使用0位元組長度申請記憶體的行為是沒有定義的,在引用記憶體申請函式返回位址時會引發不可預知錯誤,對於可能出現申請0長度記憶體的情況非常有必要判斷,避免出現這種情況。
(2)使用負數長度申請記憶體,負數會被當成乙個很大的無符號整數,導致申請記憶體過大而出現失敗。
3.申請記憶體後檢查是否申請成功,即檢查返回指標是否為null,即是否為0。
二、記憶體釋放
1.申請的記憶體一定需要釋放,有且僅能釋放一次
2.禁止釋放或函式內返回非動態申請的記憶體(棧中的記憶體,函式中的臨時變數等)
3.指標釋放後必須將指標指向空指標,否則會出現野指標的情況。
**:
C語言中的記憶體管理
先說一下c語言中的記憶體管理。1.動態記憶體分配 原因 程式執行過程中,很有可能需要一些額外的記憶體空間。動態記憶體從 來,還給誰?這塊是記憶體是系統專門預留出來的,給程式動態的分配和動態的歸還的。當free函式的引數為空的時候,那麼我們的free什麼事都不做了。clloc和realloc的用法見截...
C 語言規範 1 4 自動記憶體管理
手動記憶體管理要求開發人員管理記憶體塊的分配和 手動記憶體管理可能既耗時又麻煩。在 c 中提供了自動記憶體管理,使開發人員從這個繁重的任務中解脫出來。在絕大多數情況下,自動記憶體管理可以提高 質量和開發人員的工作效率,並且不會對表達能力或效能造成負面影響。示例using system public ...
c語言中的動態記憶體管理
malloc calloc realloc的區別與聯絡 在c語言 c 中和記憶體申請與釋放的相關函式有 alloc malloc calloc realloc free.1 alloc是在棧上申請空間,無需使用者主動釋放,當函式執行結束時,在棧上分配的記憶體會被自動釋放,棧記憶體分配運算內置於處理器...