011
17.06.2010, 13:48 Uhr
~Holger1981
Gast
|
Doch, der Sieg ist tatsächlich mein, da unscheduled cMessages bei Programmende, solange noch ein Zeiger auf Sie vorhanden ist, automatisch gelöscht werden - und bei denen, die am Ende noch gescheduled sind, kann ich ja das löschen selbst vornehmen. Jedenfalls läuft es erstmal und beendet sich auch ganz brav ohne Müll anzuhäufen.
So kann ich zwar immer noch nicht Debuggen - was ich aber in der nächsten Zeit ändern werde (scheint ja wichtig zu sein :wink, habe aber trotzdem gewonnen ...
Es gibt unter OMNeT++ "cancelAndDelete", "cancelEvent" und "delete" - das "canceln" sorgt dafür, das der "Merkzettel" (selfMessage ist das ja irgendwie) verworfen wird, ohne das die zugehörige cMessage ganz gelöscht wird.
C++: |
cancelAndDelete(cMessage *msg); // jetzt ist sie nicht mehr gescheduled, und das Objekt ist gelöscht, man müsste also ... msg = new cMessage(const char*); scheduleAt(simTime()+Offset, msg); // ... schreiben, um sich wieder einen Merkzettel zu schicken
cancelEvent(cMessage *msg); // jetzt ist sie nicht mehr gescheduled, aber das Objekt ist nicht gelöscht, man muss nur ... scheduleAt(simTime()+Offset, msg); // ... schreiben, um sich wieder einen Merkzettel zu schicken
|
---------------- Edit: cpp-Tags eingefügt. Dieser Post wurde am 17.06.2010 um 22:07 Uhr von Hans editiert. |