没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
内存分配和释放函数 malloc,calloc,realloc,free
malloc()函数:分配内存空间 (m-memory)
void *malloc(size_t size) 其中的 size 即为所用分配的内存空间的大小。malloc 函数有一个
将可用的内存块连接为一个长长地列表即空闲链表。调用 malloc 函数的时候,它将沿着连接表
寻找一个足以满足用户要求的内存块。
calloc:分配内存空间并刷新
void *calloc(size_t nitems, size_t size);
Allocates the requested memory and returns a pointer to it. The requested size is nitems
each size bytes long (total memory requested is nitems*size). The space is initialized
to all zero bits.
On success a pointer to the requested space is returned. On failure a null pointer is
returned.
分配所要求的内存空间并返回一个指向它的指针。要求的内存大小:nitems个大小为 size 的对象。
所分配的内存被初始化为 0。
如果分配成功则返回指向所分配内存的指针;否则返回 NULL。
calloc 与 malloc:calloc 初始化已分配的内存为 0(calloc 会把所分配的内存空间的每一位都
初始化为 0:如果为指针类型的元素分配内存,那么这些元素通常会被初始化为空指针;如果为
实型数据分配内存,则这些元素被初始化为浮点型的零),而 malloc 不初始化分配的内存。calloc
返回的是一个数组,而 malloc 返回的是一个对象。calloc 的效率一般是比较低的。
calloc 相当于 malloc 后再加 memset,
realloc:重新分配内存(re-重新)
void *realloc(void *ptr, size_t size);
更改以前分配区的长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个
足够大的区域,而新增区域内的初始值则不确定。size 是存储区的 newsize 新长度,而不是新旧
长度之差。例子:
如果先分配一个可容纳长度为 512 的数组的空间,并在运行时填充它,但又发现空间不够,则可
调用 realloc 扩充该存储空间。如果该存储区后有足够的空间可供扩充,则可在原存储区位置上
向高地址方向扩充,并返回传送给它的同样的指针值。如果原存储区后没有足够的空间,则
realloc 分配另一个足够大的存储区,将现存的 512 个元素数组的内容复制到新分配的存储区。
因为这种存储区可能会移到位置,所以不应该使用任何指针指向该区中。
free: 释放内存空间以供其他代码使用
void free( void *p);
资源评论
路飞大大
- 粉丝: 19
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功