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 不需要释放,如果分配成功,只释放重新分配空间的首地址
#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 不需要释放,如果分配成功,只释放重新分配空间的首地址
相关文章推荐
- C语言中堆空间的生成与释放详解
- 初学者关于c语言中函数局部变量空间释放的理解
- C语言 用free函数释放在堆上申请的空间,这个函数到底做了什么
- C语言 局部变量存储空间的分配和释放 奇怪现象及猜想
- 6.1学习内容 ndk编程释放内存,C语言中char*添加字符得方法,java二维数组的读取与生成
- C语言中free函数如何确定释放的空间大小
- C++之存储空间的动态分配和释放
- C语言学习笔记之动态分配数组空间
- 释放 Linux 系统预留的硬盘空间
- 【c语言】编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间
- C语言生成可执行文件过程(编译过程)
- 如何通过C语言自动生成MAC地址
- 第二天2-1,2,3,4】【自动扩展】【添加数据文件】【创建表空间】【undo表空间】【修改用户默认表空间】【释放没用的空间|移动表到新的表空间】
- 使用CRT调试内存分配堆来找出未释放的内存空间
- Linux服务器文件删除空间未释放的问题
- undo 表空间使用案例分析(使用率100%,enq:US-contention,释放undo)
- C语言中内存分配和释放
- linux 删除文件 空间没有释放
- C语言用完申请来的内存怎么释放
- C语言 动态生成矩阵,并实现其录入转置