gpt4 book ai didi

c++ - 如何将 boost::asio::write 的缓冲区存储为 shared_ptr?

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:42 24 4
gpt4 key购买 nike

http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/reference/async_write/overload1.html它为缓冲区声明“底层内存块的所有权由调用者保留,调用者必须保证它们在调用处理程序之前保持有效。”

为了做到这一点,我首先通过以下方式为缓冲区创建一个 shared_ptr:

request_buff_ = std::make_shared<boost::asio::const_buffer> (boost::asio::buffer(request_str));

其中 request_str 是一个 std::string。然后在写入之前取消引用:

boost::asio::write(socket, *request_buff_);

得到如下编译错误:

'const_iterator': is not a member of 'boost::asio::const_buffer'

最佳答案

缓冲区是一个简单的引用(指针+大小元组)。它可以按值(value)廉价复制。相反,让底层存储共享,例如

auto s = std::make_shared<std::string>("payload");

关于c++ - 如何将 boost::asio::write 的缓冲区存储为 shared_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44498030/

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