一个关于c 文件输入输出的问题,涉及vector的问题

[复制链接]
查看11 | 回复2 | 2011-7-5 07:48:28 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-7-5 07:48:28 | 显示全部楼层
这个问题属于浅拷贝,对象析构两次引起的。我上次见过这样一个孩子问类似的问题。
<ahref=\"http://zhidao.baidu.com/question/284804845.html\"target=\"_blank\">http://zhidao.baidu.com/question/284804845.html</a>
你可以看一下我写的解答,这个例子更加简单!而且我给你一个建议,将数据存储,交换和数据处理隔离,因为这两者之间界限分明,前者使用字节流,后者多使用字符流和容器之类的东西,不要直接串行化。这样会产生浅拷贝问题。









<h4class=\"ask\">追问


为什么outfie.write只是写的是account.name的成员变量的值,再次is.read只是将存储的account.name的成员变量的值赋值给account.name?
outfile.write((char*)
sizeof不是整个account的长度吗?
求解释,谢谢啊!
回复

使用道具 举报

千问 | 2011-7-5 07:48:28 | 显示全部楼层
因为account的成员变量中有指针,你一写一读,赋值了指针的值,但指针所指向的对象是动态创建的,你比没有赋值这个对象。结果导致两个指针指向同一个对象,main函数结束时,析构函数被调用,动态内存释放两次,堆操作错误。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行