gpt4 book ai didi

c++ - 开发中如何避免 "swapping of death"?

转载 作者:可可西里 更新时间:2023-11-01 17:04:28 25 4
gpt4 key购买 nike

可能每个人在开发过程中都至少遇到过一次这个问题:

while(/*some condition here that somehow never will be false*/)
{
...
yourvector.push_back(new SomeType());
...
}

当您看到程序开始耗尽所有系统内存时,您的程序挂起并且您的系统开始疯狂交换。如果您没有足够快地识别问题并终止进程,您可能会在几秒钟内得到一个无响应的系统,您的鼠标指针甚至不会移动。您可以等待程序因“内存不足”错误而崩溃(这可能需要很长时间),或者在您的计算机上进行重置。

如果您不能立即追踪到错误,那么您将需要多次测试和重置才能找出最烦人的错误...

我正在寻找一种可能的跨平台方式来以某种方式防止这种情况发生。最好的方法是在分配了太多内存时退出程序的 Debug模式代码,但我如何才能跟踪分配了多少内存?覆盖全局的 new 和 delete 运算符不会有帮助,因为我将在 delete 中调用的 free 函数不知道释放了多少字节。

任何想法表示赞赏。

最佳答案

如果您使用的是 Linux 或 Unix-ish 系统,您可以查看 setrlimit(2)它允许您为程序配置资源限制。您可以使用 ulimit 从 shell 执行类似的操作.

关于c++ - 开发中如何避免 "swapping of death"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com