寫c#的同志一定覺得byte 比c++的 byte * 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c#的特性,不需要象c++那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c#和c++,所以寫了個c++的類,以便方便地管理位元組流。
很簡單,先定義乙個類:cmemorybuffer。位元組流內部可以用std::vector來儲存,當然,考慮到效率,有些地方處理還是要考慮下。先把**貼出來,然後解釋為什麼這麼做。
標頭檔案:
cpp檔案:
解釋下幾點:
1、void cmemorybuffer::clear()
這地方之所以要這麼寫,是因為vector有個毛病,clear後記憶體空間還不釋放,需要物件釋放後才釋放,如果頻繁操作乙個大的位元組流,怕影響 記憶體效能.
2、void cmemorybuffer::copyfrom(const byte * tpbytes , int tilength)
{this->clear();
if(tpbytes == null || tilength == 0) return;
m_vctbuffer.resize(tilength,0);
memcpy(&m_vctbuffer[0],tpbytes,tilength);
很多人可能會寫成乙個迴圈語句:
for(int i = 0; i < tilength; i ++)
m_vctbuffer.push_back(tpbytes[i]);
這樣寫效率太低.
C 實現的Buffer類
寫c 的同志一定覺得byte 比c 的 byte 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c 的特性,不需要象c 那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c 和c 所以寫了個c 的類,以便方便地管理位元組流。很簡單,先定義乙個類 cmemo...
C 實現的Buffer類
寫c 的同志一定覺得byte 比c 的 byte 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c 的特性,不需要象c 那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c 和c 所以寫了個c 的類,以便方便地管理位元組流。很簡單,先定義乙個類 cmemo...
C 實現的Buffer類
寫c 的同志一定覺得byte 比c 的 byte 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c 的特性,不需要象c 那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c 和c 所以寫了個c 的類,以便方便地管理位元組流。很簡單,先定義乙個類 cmemo...