C 语言中 realloc 函数的用法?

· 约 3 分钟读完 · 第 102 / 143 章

推荐答案

本题详细解读

realloc 函数的基本用法

realloc 函数用于重新分配内存块的大小。它的原型如下:

  • ptr 是指向之前分配的内存块的指针。如果 ptr 为 NULL,realloc 的行为与 malloc 相同,即分配一个新的内存块。
  • size 是新的内存块的大小,以字节为单位。如果 size 为 0,realloc 会释放 ptr 指向的内存块,并返回 NULL。

realloc 的工作原理

  1. 扩展内存:如果 realloc 能够扩展当前内存块的大小,它会直接扩展并返回原来的指针。
  2. 重新分配内存:如果当前内存块无法扩展,realloc 会分配一个新的内存块,将旧内存块中的数据复制到新内存块中,然后释放旧内存块,并返回新内存块的指针。
  3. 释放内存:如果 size 为 0,realloc 会释放 ptr 指向的内存块,并返回 NULL。

注意事项

  • 内存泄漏:如果 realloc 失败并返回 NULL,原来的内存块不会被释放。因此,在使用 realloc 时,应该先将返回值赋给一个临时指针,检查是否为 NULL,然后再更新原指针。
  • 数据丢失:如果 realloc 需要重新分配内存块,旧内存块中的数据会被复制到新内存块中。如果复制过程中发生错误,可能会导致数据丢失。

示例代码解析

在示例代码中,我们首先使用 malloc 分配了一个大小为 5 的整数数组。然后使用 realloc 将数组大小扩展到 10。最后,我们初始化并打印数组的内容,并释放内存。

通过这个示例,你可以看到 realloc 如何在不丢失原有数据的情况下扩展内存块的大小。