malloc,calloc,realloc解析
Posted ~千里之行,始于足下~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了malloc,calloc,realloc解析相关的知识,希望对你有一定的参考价值。
malloc , calloc, realloc的区别
malloc
void* malloc (size_t size);
calloc
void* calloc (size_t num, size_t size);
realloc
void* realloc (void* ptr, size_t size);
共同点
- 从堆上申请内存空间
- 返回值都是void*
- 都需要强转
- 申请完使用都需要判空
- 都需要free
不同点
- malloc申请的空间没有初始化,calloc申请的空间会初始化为0
- realloc重新申请空间
- 新申请的空间小于原来的空间,只是缩小原来的空间范围
- 新申请的空间大于原来的空间(不是特别大), 在原来的空间基础上扩大空间范围
- 新申请的空间大于原来的空间(特别大),重新申请空间(地址改变)
- 申请新空间
- 将原来空间的元素拷贝到新空间
- 释放旧空间
- 返回新空间
~待补充
以上是关于malloc,calloc,realloc解析的主要内容,如果未能解决你的问题,请参考以下文章
alloc()malloc()calloc()realloc()区别及用法
C:malloc/calloc/realloc/alloca内存分配函数