C语言realloc函数解析

在网上查了很多资料,终于大概知道了这个函数的原理

void *realloc(void *ptr, size_t size);

作用:更改已经配置的堆内存空间,说白了在C语言中就是更改由malloc()函数分配的内存空间的大小。

当需要将已分配的内存减小时,则返回原指针,仅仅是对应索引的内存空间减小了

当需要将已分配的内存增大时:则分为以下3种情况:

1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。
2)如果当前内存段后面的空闲字节不够,那么就使用堆中的第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存块位置。
3)如果申请失败,将返回NULL,此时,原来的指针仍然有效。

不过有一点需要注意的是:如果调用成功,不管当前内存段后面的空闲空间是否满足要求,都会释放掉原来的指针,重新返回一个指针,虽然返回的指针有可能和原来的指针一样,即不能再次释放掉原来的指针。


接下来请看代码示例:

C语言realloc函数解析_第1张图片


你可能感兴趣的:(c)