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