在数据结构中我们经常会用到realloc来动态分配空间,它是c语言的基础,在数据结构中也是很重要的。我们直接上realloc的使用情形。
1,传给realloc的指针为空时:
当调用realloc(p,size)时,如果传来的p为NULL此时realloc等价于malloc,而malloc返回分配的空间的首地址,因此这种特殊情况下用 p = (数据类型*)realloc(p,size),否则将找不到新分配的空间。

2,在原空间后面的空间区域足够时,直接扩容:
当realloc重新分配的空间小于p所指向空间加上其后还未开辟的空间时,则直接在原空间基础上扩容。

3, 在原空间后面空间区域不够时,间接扩容:
当realloc重新分配的空间小于p所指向空间加上其后还未开辟的空间时,则先重新找块更大的空间区域以满足分配要求,再开辟size大小空间,接着将原空间元素拷贝一份到找的新空间对应处,最后释放原空间。

本文深入探讨了C语言中的realloc函数在数据结构中的应用。当realloc接收到空指针时,它等同于malloc。若原空间后有足够的未分配区域,realloc会直接扩容;否则,它会在别处寻找新空间,复制原有内容并释放旧空间。需要注意的是,当realloc分配失败,返回NULL时,应避免内存泄漏问题。
最低0.47元/天 解锁文章
1800

被折叠的 条评论
为什么被折叠?



