可能每个人在开发过程中都至少遇到过一次这个问题:
while(/*some condition here that somehow never will be false*/)
{
...
yourvector.push_back(new SomeType());
...
}
正如您所看到的,程序开始耗尽所有系统内存,您的程序挂起,并且您的系统开始疯狂地交换。如果您没有足够快地识别问题并终止进程,您可能会在几秒钟内得到一个无响应的系统,您的鼠标指针甚至不会移动。您可以等待程序因“内存不足”错误而崩溃(这可能需要很长时间),也可以在计算机上进行重置。
如果您无法立即找到错误,那么您将需要进行多次测试和重置才能找出非常烦人的...
我正在寻找一种可能的跨平台方法来以某种方式防止这种情况。最好的是调试模式代码,如果分配了太多内存,它会退出程序,但如何跟踪分配了多少内存?
覆盖全局 new 和删除运算符不会有帮助,因为我在删除中调用的释放函数不会给出任何关于释放了多少字节的信息。
任何想法表示赞赏。
如果您使用的是 Linux 或 Unix-ish 系统,您可以查看设置限制(2) http://linux.die.net/man/2/setrlimit它允许您为程序配置资源限制。您可以从 shell 执行类似的操作ulimit http://ss64.com/bash/ulimit.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)