【发布时间】:2016-11-16 00:04:52
【问题描述】:
我目前正在研究 MFC 库,我想知道为什么我应该使用 GetBuffer 成员,它返回指向 CString 对象缓冲区的指针,而不是其他允许读取和更改该对象中字符的成员函数? 例如为什么我应该这样做(代码更改 CString 对象的第一个字符):
CString aString(_T("String")); //new CString object
LPTSTR p = aString.GetBuffer(); //create new pointer to aString buffer
_tcsncpy(p, LPCTSTR(_T("a")), 1); //set first character to 'a'
aString.ReleaseBuffer(); //free allocated memory
代替:
CString aStr(_T("String")); //new CString object
aStr.SetAt(0, _T('a')); //set character at 0 position to 'a'
我想有一个更合适的应用程序使用 GetBuffer() 成员,但我不知道它可以是什么......这个函数需要 ReleaseBuffer() 来释放内存,我在 ReleaseBuffer 时可能会导致内存泄漏() 不被调用。使用它有什么好处吗?
【问题讨论】: