分析: GetBuffer, ReleaseBuffer, GetBufferSetLength(转载)
2009-08-05 19:48
531 查看
GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾), ReleaseBuffer会把多余申请的空间释放, 归还给系统; 但使用时需要注意以下问题: 如果要保存的字符串为abc(0结尾), 则GetBuffer参数应至少为3; 如果要保存的内容不是以0结尾, 比如是读取文件数据, 则GetBuffer参数如果大于文件长度时, ReleaseBuffer参数一定要为文件长度(如果GetBuffer参数为文件长度的话不存在问题, ReleaseBuffer参数可以为默认-1)!
GetBufferSetLength相对比较容易理解, 它申请一个指定长度的空间, 即使里面最终保存的字符串长度小于申请的空间长度, 也不会将多余空间释放.
CString csStr; LPTSTR lpsz = csStr.GetBuffer(100); lpsz[0] = 'a'; lpsz[1] = 'b'; lpsz[2] = '\0'; csStr.ReleaseBuffer(); int nLength = csStr.GetLength(); /* n的值为2 */ |
CString csStr; LPTSTR lpsz = csStr.GetBufferSetLength(100); lpsz[0] = 'a'; lpsz[1] = 'b'; lpsz[2] = '\0'; int nLength = csStr.GetLength(); /* n的值还是为100 */ |
相关文章推荐
- 分析: GetBuffer, ReleaseBuffer, GetBufferSetLength
- 分析: GetBuffer, ReleaseBuffer, GetBufferSetLength
- 分析: GetBuffer, ReleaseBuffer, GetBufferSetLength
- GetBuffer, ReleaseBuffer, GetBufferSetLength
- GetBuffer, ReleaseBuffer, GetBufferSetLength
- GetBuffer, ReleaseBuffer, GetBufferSetLength(转)
- [转载]对于GetBuffer() 与 ReleaseBuffer() 的一些分析
- CString中使用GetBufferSetLength和GetBuffer后执行releasebuffer的原理及必要性
- [MFC]对CString::GetBufferSetLength方法的探究
- CString GetBuffer()和ReleaseBuffer()分析
- 对于GetBuffer() 与 ReleaseBuffer() 的一些分析
- [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
- 对于GetBuffer() 与 ReleaseBuffer() 的一些分析
- 带Format和GetBufferSetLength功能的std::[w]string类。
- [MFC]对CString::GetBufferSetLength 和CString::GetBuffer区别的研究
- [MFC]对CString::GetBufferSetLength方法的探究
- [MFC]对CString::GetBufferSetLength方法的探究
- 对于GetBuffer() 与 ReleaseBuffer() 的一些分析
- CString::GetBuffer(int nMinBufLength);CString::ReleaseBuffer(int nNewLength)
- CString的GetBufferSetLength方法