gpt4 book ai didi

c++ - omn​​et++ 免费 ( ) : invalid pointer, 错误 134/139

转载 作者:行者123 更新时间:2023-11-28 07:06:17 24 4
gpt4 key购买 nike

我正在 Omnet++ 和 C++ 上开展一个项目,该项目是关于模拟 p2p 网络的协议(protocol),该协议(protocol)应该在节点退出时重新配置它们。但有时模拟会崩溃并退出,我在控制台上看到:“* glibc detected /opt/omnetpp-4.4/workspace/Progetto/Progetto: free( ): 无效指针:0x09011e4c ** ".

所以 free( ) 似乎是问题所在,但我所做的唯一释放是处理后删除消息。我试图删除

delete msg;

但错误不断发生。那么,我该如何解决呢?我不知道在哪里调用了 free()...

如果有人想看代码,就在这里

https://www.dropbox.com/sh/jdrqrt93qazn4xd/ae-qVqgzEF

更新:我刚刚尝试使用我在教程中找到的以下命令通过 Valgrind 启动我的项目(名称为 ./Progetto):

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-    fds=yes ./Progetto > log.txt

我已经将日志复制到 partebin 中,您可以在这里阅读:

http://pastebin.com/KBWLE2jV

我无法理解该日志,为什么如果使用 valgrind 启动项目不会崩溃?我看到的唯一问题是当节点通过 scheduleAt( ) 向自己发送消息时项目崩溃了...

最佳答案

免费但简短的代码审查 :)

这个结构:

struct secondNear {
char near[8];
char nearOfNear[8];
};

可能是许多错误的根源...为什么不使用 std::string 呢?

然后:

            secondNear* sn = new secondNear();
strcpy(sn->near, received->getSender());
strcpy(sn->nearOfNear, received->getNear());
this->near2.push_back(*sn);

除了会泄漏内存这一事实之外,它再次变得过于复杂。无需在堆上创建新结构,只需使用堆栈即可。

现在你的错误:我认为你通过 getSubModule() 获得了很多 cModule 类型的提示,然后你 free()它们而不是 delete...它们感觉像是类(至少根据它们的用法),所以它们可能是通过 new 而不是 Xalloc< 创建的()

关于c++ - omn​​et++ 免费 ( ) : invalid pointer, 错误 134/139,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com