有关boost::asio::read()动态内存读取的问题

发布于 2022-09-06 05:25:18 字数 477 浏览 25 评论 0

函数原型

char pic_info[PACK_SIZE];
boost::asio::read(socket,buffer(pic_info),transfer_exactly(X),ec)

当我使用char *pic_info = new char[PACK_SIZE + 1]的时候,会发生下列错误

clipboard.png

这是一个socket的简单服务器,用于接受图片,
由于图片的大小不确定,1k到5m都会有,使用char pic_info[PACK_SIZE]会严重浪费内存,所以我想用一个动态字符串接受传过来的图片

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水晶透心 2022-09-13 05:25:18
  • 可以使用streambuf(二进制流)的方式直接动态分配内存

  • 同时使用read_until函数读取结束符

  • 最后可以再转换成string类型进行使用

boost::asio::streambuf pic_info;
boost::asio::read_until(socket, pic_info, "end", ec);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文