开发过程中如何避免“死亡交换”?

2024-02-24

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

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(使用前将#替换为@)

开发过程中如何避免“死亡交换”? 的相关文章

随机推荐

  • 猫鼬预保存挂钩中的异步功能不起作用

    在预保存挂钩中调用异步函数正在返回我undefined密码 我是否从根本上误解了async这里 我已经在我的应用程序的其他区域成功使用它 它似乎工作正常 userSchema pre save function next let user
  • localStorage()、window.localStorage() 或 document.localStorage() 哪个选项更好?

    这个问题说明了一切 我意识到所有的选择do在最新的浏览器中工作 但是语义上最好的选择是什么 为什么 根据W3C标准 正确的是window localStorage因为localStorage属性是 window 对象的一部分 它不是一个函数
  • (任何语言)使用交换查找向量中元素的所有排列

    今天在实验室会议上有人问我这个问题 我们可以想象一个包含元素 1 N 1 长度为 N 的向量 是否存在生成向量中元素的所有排列或顺序的算法 系统 方法 一种建议的方法是交换随机元素 显然 如果存储所有先前生成的排列以供将来参考 那么这将起作
  • 在 Visual Studio 2019 中配置 CMake 版本

    有没有办法配置Visual Studio 2019集成CMake版本 我想使用最新 CMake 版本中的一些功能 但在这种情况下我被迫从命令行构建 如果我从 VS IDE 构建 则使用的 CMake 版本是 Visual Studio 集成
  • Chrome 41 ERR_SSL_VERSION_OR_CIPHER_MISMATCH Tomcat 7

    由于我已将 Chrome 从版本 40 更新到 41 我无法再访问在本地 tomcat 7 实例中运行的 ssl 站点 我有一个自签名证书 Chrome 只打印This webpage is not available和 一起ERR SSL
  • http 上没有侦听端点 // 可以接受 WCF 中的消息

    我正在尝试开发一个webservice 在我的应用程序中 我需要连接到我的webservice没有任何引用 所以我使用这段代码 static void Main string args BasicHttpBinding binding ne
  • 通过 PHP 使用 HTTP POST 发送 XML 数据

    我需要发送此 XML
  • 在 Android studio 中使用 Jcenter 和 gradle

    编辑 弄清楚了 我实现了 JBaruch 对项目范围 build gradle 文件的 allprojects gt repositories 部分的建议 我正在编写一个依赖 IOIO 的项目 在我的项目上编译 IOIO 的库给我带来了麻烦
  • 如何将图像从服务器(api)存储到房间数据库

    我想将来自 api 的图像存储到房间数据库中 我从 api 接收数据和图像 当我处于在线模式时 图像是使用 api 提供的 url 加载的 但当离线时 图像应该以离线模式从数据库中存储和检索 我像这样加载图像 它加载图像 if data d
  • Vaadin - 布局调整重叠大小

    当尝试调整浏览器大小时 我面临与我的项目重叠的问题 我尝试了很多不同的变体来使其发挥作用 但结果仍然不可接受 Before resizing A B and C包含在垂直布局 https vaadin com api com vaadin
  • 如何配置 sbt test / ScalaTest 仅显示失败?

    有没有办法截断测试结果 仅在单元测试失败时才显示单元测试的结果文本 我正在开发一个具有 850 个单元测试的 Scala 项目 成功的单元测试的绿色文本使得很难只关注失败的情况 我正在谈论的示例 info should have color
  • 编辑预先存在的 cab 文件/安装程序文件

    我目前正在尝试制作 CD 的下载 安装文件 但我以前从未这样做过或编写过任何类型的编码 所以我有点不知所措 当我们上次创建安装程序包时 我尚未受雇 我们使用了 InstalShield 但那是几十年前的事了 我们无法承受 500 美元以上的
  • 从computeDigest(algorithm, value) byte[] 获取字符串表示形式

    Google App Script 函数computeDigest 返回签名的字节数组 如何获取摘要的字符串表示形式 我已经尝试过 bin2String 函数 function sign var signature Utilities co
  • 在 Android 上阻止传入/传出短信

    有谁知道通过代码阻止传入 传出短信的可靠方法 如果收到实际的短信也没关系 但我想阻止收到该短信的任何通知 此外 不应允许用户发送 或者最好是键入 SMS 消息 那可能吗 Thanks 您无法阻止外发短信 这是我用来阻止传入文本的方法 短信接
  • 如何响应 AngularJS 指令中复选框的点击?

    我有一个 AngularJS指示 http docs angularjs org guide directive在以下模板中呈现实体集合 table class table thead tr th th tr thead table
  • 如何更改 CPack 中的包目标文件夹?

    我有一个多模块CMake具有根的项目CMakeLists txt与多个添加子目录 macros 据我了解 CPack CMake 的默认设置是在项目根文件夹中创建包 其中 rootCMakeLists txt居住 我想创建一个单独的inst
  • 为什么 PDWord 不是 ^DWORD?

    这个节目 APPTYPE CONSOLE TYPEDADDRESS ON uses Winapi Windows procedure Foo P PDWORD begin end procedure Bar var dw DWORD beg
  • 如何设置带有红色边框的必填编辑字段?

    我想要一些字段 当它们不被填充时 它们将是红色的并且需要填充 在帖子完成之前 这是我想要实现的目标的屏幕截图 我会添加一个TShape 它可以在编辑框周围画一条红线 如果您希望红色边框替换正常的 TEdit 边框 您可以修改编辑控件的属性
  • 部分和模板的复杂嵌套

    我的问题涉及如何处理复杂的嵌套模板 也叫partials 在 AngularJS 应用程序中 描述我的情况的最佳方式是用我创建的图像 正如您所看到的 这有可能成为一个相当复杂的应用程序 具有大量嵌套模型 该应用程序是单页的 因此它加载一个索
  • 开发过程中如何避免“死亡交换”?

    可能每个人在开发过程中都至少遇到过一次这个问题 while some condition here that somehow never will be false yourvector push back new SomeType 正如您