【发布时间】:2018-02-19 01:06:59
【问题描述】:
我有一个发出内存请求的 c 程序。之后运行我的程序,我使用 free -g -t 命令查看使用的内存。程序调用了 malloc 函数,但它没有调用 free 函数。例如: 指针=malloc(900000000*sizeof(double)) 我认为调用会占用 ram 内存,但是当我使用 free 命令时,可用内存不会改变。大约6兆。我运行该程序很多次。程序不会释放内存,但释放的内存不会改变。 我认为空闲内存操作由c中的程序员负责。 我的程序比这复杂一些,但主要操作是这样的。
我不明白为什么空闲(和占用)内存没有改变。
【问题讨论】:
-
在分配的内存上涂鸦。那应该最终分配它。 Linux 假设人们会过度分配并且懒于将内存提交给您的程序。
-
我不确定我是否理解您的评论。你说 linux free 命令 show me 的输出没有更新吗?
-
可能。我尚未正式进行过实验,但您的症状与我建议的诊断相符。
-
malloc() 确实不分配内存。它分配地址空间。一旦被引用,内存将出现故障。
标签: c linux memory memory-management