分析: GetBuffer, ReleaseBuffer, GetBufferSetLength

  • GetBuffer和ReleaseBuffer是一套需要配合使用的函數, 與GetBufferSetLength相比, 優點是如果分配的空間大於實際保存的字符串(0結尾), ReleaseBuffer會把多餘申請的空間釋放, 歸還給系統; 但使用時需要注意以下問題: 如果要保存的字符串爲abc(0結尾), 則GetBuffer參數應至少爲3; 如果要保存的內容不是以0結尾, 比如是讀取文件數據, 則GetBuffer參數如果大於文件長度時, ReleaseBuffer參數一定要爲文件長度(如果GetBuffer參數爲文件長度的話不存在問題, ReleaseBuffer參數可以爲默認-1)!

CString csStr;

LPTSTR lpsz = csStr.GetBuffer(100);

lpsz[0] = 'a';

lpsz[1] = 'b';

lpsz[2] = '/0';

csStr.ReleaseBuffer();

int nLength = csStr.GetLength();

/* n的值爲2 */

  • GetBufferSetLength相對比較容易理解, 它申請一個指定長度的空間, 即使裏面最終保存的字符串長度小於申請的空間長度, 也不會將多餘空間釋放.

CString csStr;

LPTSTR lpsz = csStr.GetBufferSetLength(100);

lpsz[0] = 'a';

lpsz[1] = 'b';

lpsz[2] = '/0';

int nLength = csStr.GetLength();

/* n的值還是爲100 */

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章