CString之GetBuffer,ReleaseBuffer

mfc中的CString是ATL的版本。

看下面的代码:

 CString str = _T("123");
 LPTSTR p = str.GetBuffer(100);
 _tcscpy_s(p, 100, _T("abcd"));
 ASSERT(str.GetLength() == 3);// Length still 3
 str.ReleaseBuffer();// Surplus memory released, p is now invalid.
 ASSERT(str.GetLength() == 4);// Length now is 4

在ReleaseBuffer之前得到的string长度是不对的。在ReleaseBuffer后p的值已经无效。

本人写码惯用SDK,对MFC一向敬而远之,不是没有道理的。

 

你可能感兴趣的:(String,mfc)