程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言中堆空間的生成與釋放詳解

C語言中堆空間的生成與釋放詳解

編輯:C語言基礎知識
堆空間的分配和釋放
 #include <stdlib.h>
 malloc、calloc、realloc、free
 malloc
 void *malloc(size_t size);
 功能:在堆中分配 size 字節的連續空間
 參數:size_字節數
 返回值:成功返回分配空間的首地址,失敗返回 NULL
 
 free
 void free(void *ptr);
 功能:釋放由 malloc、calloc、realloc 分配的空間
 參數:ptr_空間的首地址
 返回值:無
 注意:
 1、每個空間只能釋放一次
 2、ptr 必須是分配空間的首地址

 calloc
 void *calloc(size_t nmemb, size_t size);
 功能:在堆中分配 nmemb 塊大小為 size 字節的連續空間
 參數:nmemb_數據塊數 size_每塊大小
 返回值:成功返回分配空間的首地址,失敗返回 NULL
 注意:calloc 會把空間內容置 0,而 malloc 不會

 realloc
 void *realloc(void *ptr, size_t size);
 功能:在 malloc、calloc、realloc 分配的 ptr 開始空間,重新分配為 size 字節大小
 參數:ptr_malloc、calloc、realloc 分配空間首地址 size_總大小
 返回值:成功返回分配空間的首地址 失敗返回 NULL
 
 注意:
 1、如果 size 小於原空間大小,不會起作用
 2、新增加的空間不會置 0
 3、如果 ptr 為 NULL,相當於 malloc(size)
 4、如果 ptr 不為 NULL 並且 size == 0,相當於 free(ptr)
 5、ptr 不需要釋放,如果分配成功,只釋放重新分配空間的首地址
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved