发现CString一个有关问题
发现CString一个问题
------解决方案--------------------
可以用GetBuffer为CString预分配空间,赋值后用ReleaseBuffer释放多余空间
------解决方案--------------------
CString这类自己管理内存的封装类,不应该直接对内存操作,它们管理的不仅是内存的地址还有内存的大小,这些对于使用者应该是不可见的
如果你直接写内存,那么很有可能你写的就是没有分配给你的内存
------解决方案--------------------
fread(fp,csLine.GetBuffer(),5);...//各种长度大于3的赋值(别用等号操作符或format)
改为
- C/C++ code
CString csText,csLine; csLine="123";//长度为3 fread(fp,csLine.GetBuffer(),5);...//各种长度大于3的赋值(别用等号操作符或format) csText+=csLine;//这句内部实现是Append( strSrc.GetString(), strSrc.GetLength() ); 我想可能是不用等号操作符GetLength那个长度也就没有自动更新吧 如何将初始的长度3,更新为实际长度5
------解决方案--------------------
可以用GetBuffer为CString预分配空间,赋值后用ReleaseBuffer释放多余空间
------解决方案--------------------
CString这类自己管理内存的封装类,不应该直接对内存操作,它们管理的不仅是内存的地址还有内存的大小,这些对于使用者应该是不可见的
如果你直接写内存,那么很有可能你写的就是没有分配给你的内存
------解决方案--------------------
fread(fp,csLine.GetBuffer(),5);...//各种长度大于3的赋值(别用等号操作符或format)
改为
- C/C++ code
fread(fp,csLine.GetBuffer(6),5); csLine.ReleaseBuffer();