C 语言中 free 函数的用法?

· 约 2 分钟读完 · 第 103 / 143 章

推荐答案

本题详细解读

1. free 函数的作用

free 函数用于释放之前通过 malloc、calloc 或 realloc 等函数动态分配的内存。释放后的内存可以被系统重新分配使用。

2. free 函数的语法

  • ptr:指向要释放的内存块的指针。该指针必须是之前通过 malloc、calloc 或 realloc 分配的内存块的起始地址。

3. 使用 free 的注意事项

  • 释放后指针置空:释放内存后,建议将指针置为 NULL,以避免悬空指针(dangling pointer)问题。
  • 不要重复释放:对同一块内存多次调用 free 会导致未定义行为。
  • 不要释放未分配的内存:对未通过 malloc、calloc 或 realloc 分配的内存调用 free 也会导致未定义行为。
  • 不要释放栈上的内存:free 只能用于释放堆上的内存,栈上的内存由系统自动管理,不能手动释放。

4. 示例代码解析

  • 内存分配:使用 malloc 分配了 10 个 int 类型的内存空间。
  • 内存使用:通过循环将 0 到 9 的值赋给分配的内存。
  • 内存释放:使用 free 释放分配的内存,并将指针置为 NULL,避免悬空指针问题。

5. 常见错误

  • 忘记释放内存:这会导致内存泄漏,长时间运行的程序可能会耗尽系统内存。
  • 释放后继续使用指针:释放后的指针指向的内存已经无效,继续使用会导致程序崩溃或未定义行为。