我想这是一个非常讨厌的问题 - 看起来像我的类的属性析构函数创建了死锁。属性析构函数在类析构函数后自动调用。我想手动调用它们并在每一个成功后创建一个日志条目。我可以显式调用属性析构函数,以便我可以看到哪个导致问题?
该问题只出现在设备上,其中调试器无法使用,所以我使用日志代替。
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
您可能具有析构函数并自动调用它,或者有一个常规函数并手动调用它。 –