鍍金池/ 問答/C++  網絡安全/ 有關boost::asio::read()動態(tài)內存讀取的問題

有關boost::asio::read()動態(tài)內存讀取的問題

函數原型

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

當我使用char *pic_info = new char[PACK_SIZE + 1]的時候,會發(fā)生下列錯誤

clipboard.png

這是一個socket的簡單服務器,用于接受圖片,
由于圖片的大小不確定,1k到5m都會有,使用char pic_info[PACK_SIZE]會嚴重浪費內存,所以我想用一個動態(tài)字符串接受傳過來的圖片

回答
編輯回答
綰青絲
  • 可以使用streambuf(二進制流)的方式直接動態(tài)分配內存

  • 同時使用read_until函數讀取結束符

  • 最后可以再轉換成string類型進行使用

boost::asio::streambuf pic_info;
boost::asio::read_until(socket, pic_info, "end", ec);
2018年1月4日 21:06