c - free() 不释放嵌入式 Linux 中的内存。

标签 c free embedded-linux

我在嵌入式 Linux 中使用 malloc() 分配了内存(大约 10 MB)。检查可用内存为 67080 kB,但即使使用 free() 释放它之后,它仍然保持不变。只有在应用程序终止后,内存才再次可用。 free() 是否不会使释放的内存可供系统使用,如果是,如何使其可用。

最佳答案

free 是一个 libc 库调用。它将堆空间标记为可供重用。它不保证关联的虚拟映射将被释放。只有在操作系统释放脏虚拟映射之后,该内存才会再次在系统范围内释放。这只能发生在页面 block 中。

此外,如果您使用 malloc 和系列分配内存但没有使用它,那么在此之前它实际上并没有消耗物理内存 - 因此释放它不会执行任何操作。

关于c - free() 不释放嵌入式 Linux 中的内存。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21433976/

相关文章:

c - 使用 fread 函数读取二进制文件时出现问题

c - 总计 2's value is too strange!I can' t 获取正确的值

c - 在 C 中释放内存时出错

python - 后端在系统启动时关闭

c - C 中的整数到字符串,无需预先分配字符数组

c++ - 您如何在 C 预处理器中使用定义进行逻辑异或

c - 段错误(循环中的 Malloc/Free)

c++ - strdup 和免费使用

在 Linux 中使用 C 控制 PWM 设备

c - 将 fork 进程输出重定向到 NULL