【问题标题】:Omnet++ :std::bad_allocOmnet++ :std::bad_alloc
【发布时间】:2015-08-22 14:26:20
【问题描述】:

我基于自组织网络运行模拟,当节点数量很大(100 个节点)且模拟时间很长(超过 300 秒)时,我收到以下错误:

模块中的错误 (MobileOverlay) 活动中的 MobilePeerNetwork.MobilePeer[73].overlay.moverlay (id=3023) #508013243, t=372.42387824: std::bad_alloc: std::bad_alloc。

我想知道是否有办法在不使用 Valgrind 选项的情况下找到问题的确切位置,因为我在 Windows 7 中工作。

【问题讨论】:

    标签: c++ omnet++


    【解决方案1】:

    您收到此错误是因为在对象创建期间new[] 未能分配请求的存储空间。

    所以,要么你的硬件不支持你试图运行的模拟,要么你忘记释放之前分配的内存,所以你的机器内存不足。

    这是一个有用的帖子:"std::bad_alloc": am I using too much memory?


    基于 OMNeT++ 指南:

    分析支持基于 valgrind 程序, http://valgrind.org。 Valgrind 是一套用于调试和 在 Linux 上进行分析。它可以自动检测各种内存访问 和内存管理错误,并执行您的详细分析 程序。 Linux 将 Valgrind 支持引入 OMNeT++ IDE Eclipse的Tools Project,目前处于孵化状态。

    所以最初的建议是切换到 Linux 机器——也许是虚拟机,来完成你的工作。从长远来看,在 Linux 上使用 OMNeT++ 会让你受益更多。

    很明显,您正在寻找一种快速(而且可能很脏)的解决方案,因此您可以参考:Windows Eclipse CDT profiler

    【讨论】:

    • 非常感谢,我安装了在 linux 下工作所需的软件包,我希望它能工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多