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解析的主要内容,如果未能解决你的问题,请参考以下文章

malloc calloc realloc

realloc,malloc,calloc函数的区别

alloc()malloc()calloc()realloc()区别及用法

C:malloc/calloc/realloc/alloca内存分配函数

堆的分配和释放(malloc,free,calloc,realloc)

动态内存函数:malloc,calloc,realloc的介绍