在我的项目中,我有以下代码段
if(strcmp(msg->getName(),"failedAck") == 0 || ......)
{
msg->removeControlInfo();
msg->setControlInfo(info);
recvControls++;
sendDirect(msg, table, "ackIn");
}
本质上,一条消息到达其最终目的地(让我们称之为A *),如果它是一种指定的消息,它将被发送到另一个模块(B *),该模块使用它携带的信息来执行操作
我遇到的问题是,在将消息发送到其他B *之后,我在完成使用后删除了该消息。但是,当我查看检查员时,它仍然是A *的一部分。当我尝试删除A *中的消息时,我收到一条错误消息,指出无法删除该消息,因为它当前已安排。 我无法弄清楚为什么会发生这种情况,这是否意味着sendDirect()不会改变消息的所有权(与手册相反)?
非常感谢这方面的帮助,目前处理模拟中的内存管理问题,这是其中的一部分。
答案 0 :(得分:0)
我想撤回这个问题,并感谢所有看过它的人。我刚刚发现这些项目应该被删除。然而,我忘记了我正在为其他用途克隆该对象,这就是它出现在检查员中的原因。道歉。