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

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

函數(shù)原型

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

當(dāng)我使用char *pic_info = new char[PACK_SIZE + 1]的時(shí)候,會(huì)發(fā)生下列錯(cuò)誤

clipboard.png

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

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

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

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

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