在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C++  網(wǎng)絡(luò)安全/ 有關(guān)boost::asio::read()動態(tài)內(nèi)存讀取的問題

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

函數(shù)原型

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的簡單服務(wù)器,用于接受圖片,
由于圖片的大小不確定,1k到5m都會有,使用char pic_info[PACK_SIZE]會嚴重浪費內(nèi)存,所以我想用一個動態(tài)字符串接受傳過來的圖片

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

  • 同時使用read_until函數(shù)讀取結(jié)束符

  • 最后可以再轉(zhuǎn)換成string類型進行使用

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