在C++

问题描述:

强行释放内存,我尝试使用删除存储在RAM中,高速缓存信息在C++中的以下内容:在C++

system("free"); 
    system("sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\""); 
    system("free");   

不过我发现缓存没有得到清除。我在哪里错了。实际上,我的程序在RAM中占用大量空间(通过创建像队列等数据结构)。然而,在我的程序中的某一点上,我希望RAM是空闲的(即任何悬挂的指针或内存分配)应该由系统命令强制释放。虽然这会在程序终止时自动发生。程序执行时是否可以这样做?

我在Linux操作系统

+0

应该如何在操作系统知道程序运行时其分配是晃来晃去? – cdhowie 2014-11-03 02:07:44

+3

你应该明确地知道哪些变量在某些时候是无用的,并在它们上使用delete命令,这样内存就可以重新分配了。 – 2014-11-03 02:09:33

+0

我认为你需要看看你的数据结构(它们是否有效?)和内存泄漏。 – 2014-11-03 02:11:20

没有工作,这是不可能的。 /proc/sys/vm/drop_caches只释放由操作系统内核管理的缓存数据;它不能将其视为“进入”应用程序以确定其内存部分不需要。

如果您想在应用程序中释放内存,则需要释放未使用的内存(例如,使用deletefree())来自行完成。

+1

或者在适当的地方使用智能指针。 – cdhowie 2014-11-03 02:20:44

如果您可以要求操作系统释放您的程序分配的所有内存,您的程序将立即崩溃。它正在使用一些记忆,你知道吗?

还不如保存崩溃一部分,只需拨打_exit(1)