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

函数原型

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]会严重浪费内存,所以我想用一个动态字符串接受传过来的图片

阅读 5.7k
1 个回答
  • 可以使用streambuf(二进制流)的方式直接动态分配内存

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

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

boost::asio::streambuf pic_info;
boost::asio::read_until(socket, pic_info, "end", ec);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题