Omnet++ :std::bad_alloc
Omnet++ :std::bad_alloc
我基于自组织网络运行模拟,当节点数量大(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
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- 将对象移动到std::shared_ptr
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何从 std::atomic 中提取指针 T<T>?
- 为什么 std::unique 不调用 std::sort?
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- C STD ::初始化类对象中的Alloc错误错误