【发布时间】:2014-07-02 12:10:34
【问题描述】:
我已经使用boost::asio 有一段时间了,虽然我确实理解异步调用的概念,但我仍然对内存管理的含义感到有些困惑。在普通的同步代码中,对象的生命周期是明确的。但是考虑一个类似于daytime server 的场景:
可能有多个活动连接已被accepted。现在,每个连接都从套接字发送和接收一些数据,在内部做一些工作,然后决定关闭连接。可以安全地假设与连接相关的数据在处理过程中需要保持可访问性,但是一旦连接关闭,内存就可以被释放。但是我怎样才能正确地实现数据的创建/销毁呢?假设我使用classes 并将回调绑定到成员函数,我应该使用new 创建一个类并在处理完成后立即调用delete this; 还是有更好的方法?
【问题讨论】:
-
我没有发现给定的答案是现实世界或可接受的,并评论了为什么。我在问相关问题:stackoverflow.com/questions/43239208/… 对于任何在谷歌上搜索的人。
标签: c++ memory-management boost-asio