如果boost::asio套接字是shared_ptr对象的成员,您是否必须手动关闭它们
Do you have to manually close boost::asio sockets if they are members of a shared_ptr object?
我有一个套接字,它是shared_ptr对象的成员。我是否必须显式调用socket.close()
,或者假设它自动关闭是否安全?
我之所以这么问,是因为在这个TCP Daytime Server示例中,作者没有显式调用socket.close()
。
这取决于何时需要关闭套接字。
通常,套接字解构器会导致套接字关闭(因为不这样做会导致资源泄漏(。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 在C++类中,是否必须初始化作为数组的成员变量
- C++LDAP检查用户是否是特定组的成员
- 是否可以同时声明一个类成员的常量/非常量?
- 添加静态constexpr成员是否会更改结构/类的内存映射
- 具有引用成员的结构是否具有唯一的对象表示形式
- 对象初始化中是否允许指向此成员的指针?
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 是否可以防止省略聚合初始化成员?
- 静态 constexpr 类成员变量对多线程读取是否安全?
- C++:是否可以使用非静态成员变量模板?
- 模板化检查是否存在带有参数列表的类成员函数?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 是否可以根据其数据成员的类型确定类型的大小
- 是否可以将结构数组别名为结构成员数组?
- 是否可以使用右值初始化数据成员?
- 是否可以将不可复制的成员用作使对象不可复制的替代方法?
- 检测是否存在具有 C++17 的类成员