异步c++代码中的内存管理
Memory management in asynchronous C++ code
我使用boost::asio
已经有一段时间了,虽然我确实理解异步调用的概念,但我仍然对内存管理的含义有些困惑。在正常的同步代码中,对象生存期是明确的。但是考虑一个类似于白天服务器的场景:
可能有多个活动连接已经accept
。每个连接现在从套接字发送和接收一些数据,在内部做一些工作,然后决定关闭连接。可以安全地假设,与连接相关的数据需要在处理期间保持可访问性,但是一旦连接关闭,就可以释放内存。但是我怎样才能正确地实现数据的创建/销毁呢?假设我使用class
es并将回调绑定到成员函数,我应该使用new
创建一个类并在处理完成后立即调用delete this;
,还是有更好的方法?
但是我怎样才能正确地实现数据的创建/销毁呢?
使用shared_ptr
.
假设我使用类并将回调函数绑定到成员函数,我是否应该使用new创建一个类并调用delete this;一旦处理完成还是有更好的方法?
让你的类继承enable_shared_from_this
,使用make_shared
创建你的类的实例,当你绑定回调时将它们绑定到shared_from_this()
而不是this
。实例的销毁将在它们离开最后一个需要它们的作用域时自动完成。
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- C++将字符串传递给 C 库以进行内存管理
- 从函数返回时C++内存管理
- 函数指针和 lambda 的内存管理
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- C++中的内存管理
- C和C++中的内存管理有什么区别
- 字符 * 未从重载运算符或内存管理问题正确返回
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 底层指针和内存管理
- 智能指针,避免使用QNetworkAccessManager时进行手动内存管理
- c++中的内存管理问题
- 使用矢量时的内存管理
- 循环和内存管理中的指针算术C++?
- C++堆栈内存管理问题
- C 内存管理中的课程如何管理 - 研究
- 不可变数据模型的内存管理
- C++ 使用数组初始化时的 STL 向量内存管理
- SFML 纹理内存管理