使用 boost 库的 make_shared_noinit 函数可以在创建 shared_ptr 对象时不进行初始化,这对于某些特定场景中非常有用

349 篇文章 ¥29.90 ¥99.00
本文介绍了如何使用 boost 的 make_shared_noinit 函数创建不进行初始化的 shared_ptr 对象,强调了其在特定场景的适用性,并通过一个测试程序展示了其用法和潜在风险,提醒开发者注意未初始化对象访问的不确定性。

使用 boost 库的 make_shared_noinit 函数可以在创建 shared_ptr 对象时不进行初始化,这对于某些特定场景中非常有用。接下来我们将给出一个测试程序,使用该函数来构造 shared_ptr 对象,并验证其正确性。

源代码如下:

#include <iostream>
#include <boost/make_shared.hpp>

struct MyClass {
   
   
  int a;
<
linux QT4调用websocket环境,代码如下 {//ws websocket_tpye = websocket_no_tls; if(m_init) { m_init = false; _client_no_tls.clear_access_channels(websocketpp::log::alevel::all); _client_no_tls.clear_error_channels(websocketpp::log::elevel::all); _client_no_tls.init_asio(); _client_no_tls.start_perpetual(); client_thread = websocketpp::lib::make_shared<websocketpp::lib::thread>(&client_no_tls::run, &_client_no_tls); } websocketpp::lib::error_code ec; client_no_tls::connection_ptr con = _client_no_tls.get_connection(uri, ec); if (ec) { QDEBUG<<" could not create connection because:"<<QString::fromStdString(ec.message()); return -1; } metadata_no_tls = websocketpp::lib::make_shared<connection_metadata_no_tls>(con->get_handle(), uri); if(QString::fromStdString(password).isEmpty()) { } else { std::string val = "Basic "+base64_encode(QString::fromStdString(devnumber)+":"+QString::fromStdString(password)); con->append_header("Authorization", val); } con->set_open_handler(websocketpp::lib::bind( &connection_metadata_no_tls::on_open, metadata_no_tls, &_client_no_tls, websocketpp::lib::placeholders::_1 )); // con->set_pong_timeout(10); // con->set_pong_timeout_handler(websocketpp::lib::bind( // &connection_metadata_no_tls::on_ping, // metadata_no_tls, // &_client_no_tls, // websocketpp::lib::placeholders::_1 // )); con->set_fail_handler(websocketpp::lib::bind( &connection_metadata_no_tls::on_fail, metadata_no_tls, &_client_no_tls, websocketpp::lib::placeholders::_1 )); con->set_close_handler(websocketpp::lib::bind( &connection_metadata_no_tls::on_close, metadata_no_tls, &_client_no_tls, websocketpp::lib::placeholders::_1 )); con->set_message_handler(websocketpp::lib::bind( &connection_metadata_no_tls::on_message, metadata_no_tls, websocketpp::lib::placeholders::_1, websocketpp::lib::placeholders::_2 )); _client_no_tls.connect(con); } },如何实现定推送ping功能
最新发布
07-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值