C ++ hat keinen eigenen Schutz gegen die Verwendung eines Objekts nach dem Löschen - vergessen Sie die Rennbedingungen - ein anderer Thread könnte Ihr Objekt verwenden, nachdem es vollständig gelöscht wurde.
Entweder:
Sie sollten ein Objekt nicht zerstören, wenn Sie nicht sicher sind, dass nichts anderes versucht, es zu benutzen - im Idealfall hat nichts anderes einen Hinweis darauf. Sie müssen sich genauer ansehen, wenn Sie delete aufrufen.
Wenn Sie sich in einem Destruktor befinden, weil sich der Stack im Exception-Handler abwickelt, empfehle ich, Ihren Code so umzuordnen, dass Sie Exceptions innerhalb eines serialisierten Blocks abfangen können.
Nach dem Block überprüfen Sie, ob das Objekt noch gültig ist und rufen Sie Ihre Methode auf. Auf diese Weise ermöglicht die Ausnahme in einem Thread anderen Threads, den Aufruf von Destruktor ordnungsgemäß zu behandeln.
Tags und Links c++ multithreading destructor