首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言標準庫內存分配函數對比:malloc、calloc、realloc 詳解

     編輯:關於C語言

C語言標準庫內存分配函數對比:malloc、calloc、realloc 詳解

均聲明於 <stdlib.h>,返回 void*,失敗返回 NULL,需手動 free() 釋放。

1. malloc(size_t size)

  • 分配 size 字節連續堆內存,內容未初始化(垃圾值)。

2. calloc(size_t num, size_t size)

  • 分配 num * size 字節,內容自動初始化為 0。
  • 等價於 malloc + memset(ptr, 0, num*size),但可能更高效(內核零頁優化)。

3. realloc(void *ptr, size_t size)

  • 調整 ptr 指向的內存塊大小為 size。
  • 擴容:若原地址後有足夠空間就地擴展,返回原指針;否則分配新塊、拷貝數據、釋放舊塊,返回新指針。
  • 縮容:可能就地縮小,也可能移動。
  • ptr=NULL 時等價 malloc(size);size=0 時等價 free(ptr)(實現定義)。

使用建議

  • 分配後立即檢查 NULL。
  • 釋放後置 NULL 防止懸空指針。
  • 避免 realloc 頻繁小幅擴容(指數增長策略)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved