Access violation writing location 0xfeeefeee.新手急用

OracleCer 2012-07-04 05:31:19
C++新手,希望解答得稍微详细点,谢谢


int main()
{
sevenPara p7;
p7.K = "aaaaa";

ofstream fout("E:\\qqq.para",ios::binary|ios::out);
fout.write(reinterpret_cast<char *>(&p7), sizeof(p7));
fout.close();

string aaa = "a";
sevenPara p8 ={
"a","a","a",0,0,0,0,0,0
};

ifstream fin("E:\\qqq.para",ios::binary|ios::in);
fin.read(reinterpret_cast<char *>(&p8), sizeof(p8));
fin.close();
aaa = p8.K;
system("pause");
return 0;
}


sevenPara定义

struct sevenPara
{
string src_srs;
string dst_srs;
string K;
double Dx;
double Dy;
double Dz;
double Ox;
double Oy;
double Oz;
};


代码如上,开发环境是VS2010,build成功,运行也可以,就是到最后“按任意键继续”,随便按键,就会弹出
“Unhandled exception at 0x1005ad54 (msvcp100d.dll) in ConsoleTest.exe: 0xC0000005: Access violation writing location 0xfeeefeee.”

网上查了半天也是晕头,高手帮帮忙吧!


...全文
306 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-07-04
  • 打赏
  • 举报
回复
在结构体中,慎用string,最好用char数组代之。
薛定谔之死猫 2012-07-04
  • 打赏
  • 举报
回复
貌似是重复析构的问题吧,把p7对象的内容全部复制给p8,结果包含的对象是引用,这么一来就析构两次,string的内容就会被释放两次~
www_adintr_com 2012-07-04
  • 打赏
  • 举报
回复
string 内部使用了堆内存, 不是直接保存就可以的. 把 string 换成 char K[1024]; 之类的就可以了. string 等同于这里是 char* K;
薛定谔之死猫 2012-07-04
  • 打赏
  • 举报
回复
运行木有问题,没仔细看代码,也是VS2010,Win7 64bit。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧