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 不須要釋放,假如分派勝利,只釋放從新分派空間的首地址