C 實現的Buffer類

2021-09-30 08:54:55 字數 765 閱讀 5616

寫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...