您的位置:首页 > 编程语言 > C语言/C++

C语言堆空间的生成与释放

2013-08-13 22:11 176 查看
堆空间的分配和释放

#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 不需要释放,如果分配成功,只释放重新分配空间的首地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: