CString 的疑惑
CString strMD="test string";
CString str2 str3;
str2=strMD.GetBuffer(2);
str3=strMD.GetBuffer(20);
打印出来 str2 str3和strMD是一样的。
GetBuffer( int nMinBufLength ); nMinBufLength到底用来干吗的
CString strMD="test string";
CString str2 str3;
str2=strMD.GetBuffer(2);
str3=strMD.GetBuffer(20);
打印出来 str2 str3和strMD是一样的。
GetBuffer( int nMinBufLength ); nMinBufLength到底用来干吗的
GetBuffer(2)和GetBuffer(20)作用相同。但是如果你执行以下操作又可能发生内存访问错误
char * pstr = strMD.GetBuffer(2);
pstr[n]= '5';
注:n>strMD的长度
换句话说:getbuffer实际上是返回一段内存空间。空间的大小由nMinBufLength决定
(如果nMinBufLength小于strMD长度空间大小有字符串空间大小决定)
看也看得出来,指定最小的buffer长度
如果这个值比字符串长度小,分配的是字符串的长度
如果这个值比字符串长度大,分配的是这个值的长度