Omnet++ :std::bad_alloc

Omnet++ :std::bad_alloc

本文关键字:alloc std Omnet++ bad      更新时间:2023-10-16

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

模块(MobileOverlay)错误MobilePeerNetwork.MobilePeer [73] .overlay。事件叠加(id=3023)#508013243, t=372.42387824: std::bad_alloc: std::bad_alloc.

我想知道是否有一种方法可以找到问题的确切位置,而不使用Valgrind选项,因为我在windows 7中工作。

您得到这个错误是因为在对象创建过程中new[]分配请求的存储空间失败。

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

这是一个有用的帖子:"std::bad_alloc":我使用了太多的内存吗?


基于omnet++指南:

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

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

显然,您正在寻找一个快速的(可能是肮脏的)解决方案,因此您可以参考这个:Windows Eclipse CDT profiler