C++ OMNet++;|模拟运行时错误:对象当前处于(omnetpp::cEventHeap)Simulation.scheduled-events中

C++ OMNet++;|模拟运行时错误:对象当前处于(omnetpp::cEventHeap)Simulation.scheduled-events中,c++,runtime,simulation,message,omnet++,C++,Runtime,Simulation,Message,Omnet++,我对使用OMNeT++IDE非常陌生,我想使用一些“无限数组”在消息中存储一些数据。我的代码没有任何错误,但是当我启动模拟时,它会立即停止。我已经签入调试模块,它确实启动了,但是当我应该使用此消息时,我得到了以下运行时错误: 仅当我在另一个模块中发送消息时,此错误才会出现 经过进一步检查,我发现这是因为我使用了“无限数组”: 我的消息实现。msg 这是我从调试器中得到的: 综上所述,我认为我应该在消息的析构函数方法中使用drop()函数,但我不确定,我还没有成功地将它用于这些无限数组 这是我

我对使用OMNeT++IDE非常陌生,我想使用一些“无限数组”在消息中存储一些数据。我的代码没有任何错误,但是当我启动模拟时,它会立即停止。我已经签入调试模块,它确实启动了,但是当我应该使用此消息时,我得到了以下运行时错误:

仅当我在另一个模块中发送消息时,此错误才会出现

经过进一步检查,我发现这是因为我使用了“无限数组”:

我的消息实现。msg

这是我从调试器中得到的:

综上所述,我认为我应该在消息的析构函数方法中使用drop()函数,但我不确定,我还没有成功地将它用于这些无限数组

这是我的消息析构函数方法:

Msg_event_data::~Msg_event_data()
{
   delete[] this->map_left_column; //auto generated by omnet++
   delete[] this->map_right_column;//auto generated by omnet++
}
请你帮个忙好吗?我被这件事困住了


附言:我正在使用最新版本的OMNET++在Win-64操作系统上与Intel-I7配合使用。(2020年7月30日)

这与“无限”数组或其他什么无关。出现错误消息的原因是您试图删除消息队列中已计划的数据包。这意味着您创建了一个数据包(Masg_event_data),在通过
send()
调用将其发送出去后,您保留了它的指针,然后在代码中的其他地方重新使用该指针并尝试将其删除。将消息/数据包传递给
send()
scheduleAt()
后,您应该忘记所有指向它的指针,并且永远不要取消引用它。下一次当消息被处理到目标模块的
handleMessage()
函数时,您可以使用此数据包。此时,它将从事件队列中删除,您可以自由删除它


根据调试器堆栈跟踪,此错误发生在
TDMA::sendMessageBurst()
函数中。您正在删除名为
sendMessageBurst
的函数中的数据包?这在语义上肯定是不正确的,但是如果没有看到和理解上述函数体,就不可能说出如何/为什么。。。所以,至少,这个问题应该包括
TDMA::sendmagesburst()
TDMA::initialize()
代码。

拜托,我不知道谁不喜欢我的帖子,我的意思是我很尊重,但它比Tic-Toc教程复杂一点(+文档和互联网上没有太多关于这方面的内容…)你能编辑你的问题并提供答案吗?嗨,答案是Thks!事实上,我最终还是用另一种方式解决了这个问题。我不知道你是否正确,但事实上,我后来在代码中重用了指针。我知道我的问题中应该包含更多的代码,但由于某些原因,我不被允许这样做。又来了!顺致敬意,
Msg_event_data::~Msg_event_data()
{
   delete[] this->map_left_column; //auto generated by omnet++
   delete[] this->map_right_column;//auto generated by omnet++
}