CString a,b;
a="123456789";
b=a;
b.ReleaseBuffer(5);
为什么b变成12345的同时 a也会变成12345 又不是引用.
a="123456789";
b=a;
b.ReleaseBuffer(5);
为什么b变成12345的同时 a也会变成12345 又不是引用.
解决方案 »
- 谁有孙鑫VC++视频教程啊,在网上下了好多都是看不清代码的,很郁闷!有的麻烦传一下给我,先谢谢了!
- com(executable类型)中调用dll后,不能创建com对象。怎么办?
- 求几部MFC电子书下载!
- 用VS2005的朋友进来看一下
- 怎样写一个能让网页调用的ACTIVEX控件?
- 求助远程桌面,求购远程桌面代码和技术
- 請間 currency 類型怎麼使用?
- 十分奇怪的问题,win2000下编辑框粘贴文本出错。
- 用ado连接数据库时,如何取出其中的空字段?
- 怎样把窗口的样式设成像Netterm等telnet软件那样?
- 下面2句指针用法导致内存崩溃,求真心的你帮助下我啊
- 请问下,消息在继承的时候是怎么回事
a="123456789";
b=a;
b.GetBuffer(5);
b.ReleaseBuffer(5);这样a就不会截断了
VC6就没有问题.
主要是 b = a 的时候,他们大家都指向同一个堆中的字符地址了.
在VC6里面,ReleaseBuffer的时候,会先判断一下使用计数,像执行过b=a这些操作,同时指向同一地方的.
使用计数会是2,VC6里,会把使用计数减1,然后自身再建新的位置来改新的长度.但是在VS2008里面,明明是使用计数是2,但却没有把使用计数减1,而去改buf里的内容.
牛X,越来越发现我的debug能力及其垃圾,堆栈汇编统统看不懂,出错愣是用MessageBox之类的输出信息定位到出错代码,相当的累啊