CString 的疑惑 
CString strMD="test string";
  CString str2 str3;
  str2=strMD.GetBuffer(2);
  str3=strMD.GetBuffer(20);
打印出来 str2 str3和strMD是一样的。
GetBuffer( int nMinBufLength );  nMinBufLength到底用来干吗的

解决方案 »

  1.   

    当nMinBufLength超过字符串现在分配的内存长度的时候,就会释放原来的字符指针,重新分配内存CString实际上有一个TCHAR*的指针
      

  2.   

    对于只读取CString结果
    GetBuffer(2)和GetBuffer(20)作用相同。但是如果你执行以下操作又可能发生内存访问错误
    char * pstr = strMD.GetBuffer(2);
    pstr[n]= '5';
    注:n>strMD的长度
    换句话说:getbuffer实际上是返回一段内存空间。空间的大小由nMinBufLength决定
    (如果nMinBufLength小于strMD长度空间大小有字符串空间大小决定)
      

  3.   

    nMinBufLength
    看也看得出来,指定最小的buffer长度
    如果这个值比字符串长度小,分配的是字符串的长度
    如果这个值比字符串长度大,分配的是这个值的长度