【发布时间】:2014-01-29 14:28:19
【问题描述】:
我在嵌入式 Linux 中使用 malloc() 分配了内存(大约 10 MB)。并检查了可用内存为 67080 kB,但即使使用 free() 释放它,它仍然保持不变。只有在应用程序终止后,内存才能再次可用。 free() 是否不会使释放的内存对系统可用,如果是如何使其可用。
【问题讨论】:
-
这取决于 malloc 的实现,但通常会有一个内部池,因此您可能看不到释放指针的任何立竿见影的效果。
-
当您
free内存时,系统仍会为您保留它,以防您需要再次分配它(因此它不必重做内存映射表)。系统会在需要时占用内存。 -
请注意,如果您正在运行一种(越来越常见的)uClinux 或其他非 MMU 嵌入式 Linux 配置,则将内存返回到系统变得更加困难。
-
@Chris:是的,我正在使用嵌入式 Linux(类似于 uClinux 的定制版本)。
标签: c free embedded-linux