2017-02-22 8 views
0

でそれにsendirectを()を使用した後、私は、コードスニペット以下のいる削除メッセージ私のプロジェクトではomnetpp

if(strcmp(msg->getName(),"failedAck") == 0 || ......) 
{ 
    msg->removeControlInfo(); 
    msg->setControlInfo(info); 
    recvControls++; 
    sendDirect(msg, table, "ackIn"); 
} 

は基本的に、メッセージがその最終目的地に到着し、それならば(*それを呼び出すことができます)指定されたメッセージの一種で、操作を実行するために運ぶ情報を使用する別のモジュール(B *)に送られます。

私が抱えている問題は、他のB *にメッセージを送信した後、メッセージを使用してメッセージを削除したことです。しかし、私は検査官を見るとまだA *の一部として現れています。そして、A *でメッセージを削除しようとすると、現在スケジュールされているため、メッセージを削除できないというエラーメッセージが表示されます。 なぜこれが起こるのかわかりません。つまり、sendDirect()はメッセージの所有権を変更しません(マニュアルとは異なります)。

私のシミュレーションでは、現在メモリ管理の問題を扱っていますので、この点について助力をいただければ幸いです。これはその一部です。

+0

**同じ**メッセージがインスペクタに表示されていますか?あなたはそれを使用した後にどこにコードを表示することができますか? 'table'は別のモジュールへのポインタですか? –

+0

詳細を教えてください。ここでA *のメッセージを削除してください。 –

+0

同じメッセージを削除してもよろしいですか?メッセージがFES内にあるため、メッセージがスケジュールされているというエラーが表示されます。 – pys

答えて

0

私はこの質問を撤回し、それを見た皆様に感謝したいと思います。私はちょうどそれらがあると思われていたときにアイテムが削除されていたことを最近知った。しかし、私は他の用途のためにオブジェクトのクローンを作成していたことを忘れていました。なぜそれがインスペクタに表示されていたのですか。謝罪いたします。

関連する問題