ReleaseBuffer 有什么用呢?
程序代码:
#include "u_def.h" #include <stdio.h> #include <afx.h> // #include "u_linearStruct.h" int main( int ac, char **av ) { char *pstr = NULL; CString strIn("zhong"); pstr = strIn.GetBuffer(0); printf("0:%s\n", pstr); pstr = strIn.GetBuffer(1); printf("1:%s\n", pstr); strIn.ReleaseBuffer(); printf("ReleaseBuffer:%s\n", pstr); strIn += "yunde"; printf("+ :%s\n", pstr); strIn.ReleaseBuffer(); printf("+ ReleaseBuffer:%s\n", pstr); return 0; }使用上面的代码发现,
1)在CString变量的长度发生变化的时候,其内存地址均会被reallocated了,
也就是ReleaseBuffer不管是否调用一次,pstr的地址都不会有效了,那为什么在MSDN上说
使用了GetBuffer再执行其他的操作前需要嗲用ReleaseBuffer
2)发现strIn.GetBuffer(0);和strIn.GetBuffer(1);得到相同的返回值,那这个参数有什么用呢 ?