我想這是一個非常討厭的問題 - 看起來像我的類的屬性析構函數創建了死鎖。屬性析構函數在類析構函數後自動調用。我想手動調用它們並在每一個成功後創建一個日誌條目。我可以顯式調用屬性析構函數,以便我可以看到哪個導致問題?
該問題只出現在設備上,其中調試器無法使用,所以我使用日誌代替。
Client::~Client() {
// Stops io service and disconnects sockets
exit();
LOG("io_service stopped"<<endl);
// Destroy IO service
io_.~io_service();
LOG("io_service destroyed"<<endl);
}
但其實上面的代碼導致的異常,因爲~io_service()
被調用兩次。
那麼有沒有辦法正確地做到這一點?如果不是,調試析構函數有什麼替代方法?
AFAIK,做類似事情的唯一方法是使用[放置新](http://www.parashift.com/c++-faq/placement-new.html)。 – ikh
您可能具有析構函數並自動調用它,或者有一個常規函數並手動調用它。 –