C++ 在C+中强制释放内存+;
我试图使用C++中的以下命令删除存储在RAM和缓存中的信息:C++ 在C+中强制释放内存+;,c++,linux,ubuntu-12.04,C++,Linux,Ubuntu 12.04,我试图使用C++中的以下命令删除存储在RAM和缓存中的信息: system("free"); system("sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\""); system("free"); 但是我发现缓存没有被清除。我哪里出了问题。实际上,我的程序在RAM中占用了很多空间(通过创建队列等数据结构)。然而,在我的程序中的某一点上,我希望RAM是空闲的(即任何悬空指针或内存分配),应该
system("free");
system("sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\"");
system("free");
但是我发现缓存没有被清除。我哪里出了问题。实际上,我的程序在RAM中占用了很多空间(通过创建队列等数据结构)。然而,在我的程序中的某一点上,我希望RAM是空闲的(即任何悬空指针或内存分配),应该通过系统命令强制释放。虽然这会在程序终止时自动发生。当程序正在执行时,是否可以执行相同的操作
我正在linux操作系统上工作不,那是不可能的
/proc/sys/vm/drop_缓存
仅释放由操作系统内核管理的缓存数据;它不能“检查”应用程序以确定它们的部分内存是不需要的
如果要释放应用程序中的内存,您需要释放未使用的内存(例如,使用
delete
或free()
)。如果您可以要求操作系统释放程序分配的所有内存,您的程序将立即崩溃。你知道,这是在利用一些记忆
还不如保存崩溃部分,只需调用
\u exit(1)
在程序运行时,操作系统如何知道哪些分配处于挂起状态?您应该明确了解哪些变量在某个时候是无用的,并对其使用delete命令,这样内存就可以重新分配了。我想你需要看看你的数据结构(它们有效吗?)和内存泄漏。听起来你要找的是一个垃圾收集器。这些在C++中没有被广泛使用,但它们确实存在。不过,您最好还是使用智能指针,或者在适当的情况下使用智能指针。