gpt4 book ai didi

c++ - boost asio - 套接字类的内存管理

转载 作者:行者123 更新时间:2023-11-30 04:29:45 24 4
gpt4 key购买 nike

我有一个 boost asio 服务器应用程序,我正在努力解决如何传输创建的套接字(例如,将接受套接字传输到将读取/写入数据的协议(protocol)实现类)

例如,如果我让它们通过 shared_ptr 传输到读取/写入它们的不同类,它就会成功。我的服务器在退出主程序之前有一个 io_service.run() 并且在这些套接字上完成的所有异步操作都在那里执行。

编辑 我发现问题不是我传输套接字类的方式。可以将这些所有权保留在一个类中并在以后传递引用。在我的例子中,其中一个连接类在异步操作处理程序完成工作之前被销毁。

最佳答案

我认为这个问题实际上与 asio 无关,可以概括为“我应该如何转移已分配对象的所有权?”

我的答案是:使用 std::unique_ptr(...对于 C++11)

如果 unique_ptr 的接收者想要使用不同的所有权习语(如 shared_ptr),很容易从 unique_ptr 释放并转向它变成一个 shared_ptr。反之则不然。这样,您的指针就不会是原始指针并且可能会泄漏。

关于c++ - boost asio - 套接字类的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9128311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com