读书人

一个简单的读文件程序-vs2008中“堆可

发布时间: 2012-04-02 19:58:59 作者: rapoo

一个简单的读文件程序--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];
}

读书人网 >C++

热点推荐