有关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.8k
1 个回答
  • 可以使用streambuf(二进制流)的方式直接动态分配内存

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

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

boost::asio::streambuf pic_info;
boost::asio::read_until(socket, pic_info, "end", ec);
推荐问题