一个简单的读文件程序-vs2008中“堆可能被破坏的有关问题”
一个简单的读文件程序--vs2008中“堆可能被破坏的问题”
------解决方案--------------------
- C/C++ code
/* 一个简单的读文件程序 */ pair<int**,int**> readFile(){ ifstream ifileOne("one.txt"); ifstream ifileTwo("two.txt"); if(ifileOne.fail()||ifileTwo.fail()) exit(0); int **dis=new int*[50]; int **val=new int*[50]; string str; for(int i=0;i<50;++i){ dis[i]=new int(); val[i]=new int(); } for(int i=0;i<50;++i){ for(int j=0;j<50;++j){ ifileOne>>str; dis[i][j]=atoi(str.c_str()); ifileTwo>>str; val[i][j]=atoi(str.c_str()); } } ifileOne.clear(); ifileOne.close(); //运行到这里就出错,出错原因 /* 其原因可能是堆被损坏,这说明 程序 中或它所加载的任何 DLL 中有 Bug。 原因也可能是用户在程序中 具有焦点时按下了 F12。 输出窗口可能提供了更多诊断信息。 */ ifileTwo.clear(); ifileTwo.close(); return make_pair(dis,val); }
------解决方案--------------------
- C/C++ code
for(int i=0;i<50;++i){ dis[i]=new int[50]; val[i]=new int[50]; }
------解决方案--------------------
for(int i=0;i<50;++i){
dis[i]=new int();
val[i]=new int();
}
改为
for(int i=0;i<50;++i){
dis[i]=new int[50];
val[i]=new int[50];
}