GetBuffer与ReleaseBuffer

GetBuffer函数最典型的用法了,其实它就相当于申请一块nLen大小的内存,只不过,这块内存是被引用在CString对象的内部而已,这是非常有效的一种用法,如果不直接用GetBuffer函数来申请的话,那么你必须用new操作符(或者malloc()函数)在CString的外部申请,然后再将申请的内存拷贝到CString对象中,显然这是一个非常冗余的操作,会使你函数的效率大大下降。

  ReleaseBuffer函数是用来告诉CString对象,你的GetBuffer所引用的内存已经使用完毕,现在必须对它进行封口,否则CString将不会知道它现在所包含的字符串的长度,所以在使用完GetBuffer之后,必须立即调用ReleaseBuffer函数重置CString的内部属性,其实也就是头部信息。

CString str;
strcat(str.GetBuffer(0),"12");
错误,因为12长度是2

CString str="123";
strcat(str.GetBuffer(5),"12");
AfxMessageBox(str);
如果参数小于5就会出错

posted @ 2008-05-12 10:24  zhaogaojian  阅读(199)  评论(0编辑  收藏  举报