Omnet ++:std :: bad_alloc

时间:2015-08-22 14:26:20

标签: c++ omnet++

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

  

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

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

1 个答案:

答案 0 :(得分:2)

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

因此,您的硬件无法支持您尝试运行的模拟,或者您忘记释放先前分配的内存,因此您的计算机内存不足。

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

基于OMNeT ++指南:

  

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

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

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