控制C ++程序使用的内存

时间:2013-11-08 02:48:28

标签: c++ memory-management ram

我有一个在崩溃之前使用大量内存的C ++程序。我可以指定(通过命令行或其他一些黑客)它应该只使用2Gb RAM并且在崩溃之前不要一直使用系统中的所有内存吗?

程序处理输入文件列表。目前,我会跟踪程序崩溃的文件,然后在崩溃的文件中重新启动程序。

我正在考虑像另一个程序那样跟踪这个特定程序使用多少内存并在超出限制时将其终止。我正在研究Ubuntu 12.10。

P.S。似乎没有简单的方法可以做到这一点。人群的智慧是主程序应该修复。

2 个答案:

答案 0 :(得分:2)

当分配的总数超过2gb时,您可以编写自己的operator new,它会抛出bad_alloc(通常在内存不足时)。

请注意,这是一个糟糕的表单,并且容易出错....有几种方法可以绕过全局operator new。对于你的“破解”目的,它可能就足够了。

答案 1 :(得分:0)

您将限制程序在代码中使用的内存量。

操作系统应该足够智能,以尽可能保持代码运行(例如,将内容缓存到磁盘)。您的系统性能可能会停止,但如果您需要,如果磁盘上有空间作为“额外内存”,您的代码仍会执行。

如果您传入参数来限制内存,您的代码将需要知道如何处理它。

但如果你正在吃掉整个系统的内存,那么这表明你的方法至少需要一些调整,或者可能需要彻底检查。您的算法可能效率不高,无法使用合理的内存约束。

(这假设您的代码没有泄漏内存。如果是,请修复它。)