2013-10-12 121 views
0

我试着写一个程序,但我得到的分割故障(核心转储)运行时。当我把一个定义的数组像array_2d [10] [1],问题就解决了,但我需要为我的项目做内存分配。这是我的代码的简单版本:指针多维数组中

#include <iostream> 
#include <cmath> 
#include <fstream> 
#include <cstdlib> 
#include <string> 
using namespace std; 

class Exam 
{ 
    private: 
     double** array_2d; 
     unsigned int num; 
     unsigned int num1; 
    public: 
     Exam(); 
     void memoryallocation(); 
     void show(); 
}; 

Exam::Exam() 
{ 
    num=10; 
    num1=1; 
} 

void Exam::memoryallocation() 
{ 
    double** array_2d = new double*[num]; 
    for (unsigned int i = 0; i < num ;i++) 
    { 
     array_2d[i] = new double[num1]; 
    } 
} 

void Exam::show() 
{ 
    ifstream file; 
    file.open("fish.txt"); 
    for (unsigned int i = 0; i < num; i++) 
    { 
     for (unsigned int j = 0; j < num1; j++) 
     { 
      file >> array_2d[i][j]; 
      cout<<array_2d[i][j]<<" "; 
     } 
     cout<<endl; 
    } 

    file.close(); 
} 

int main() 
{ 
    Exam E; 
    E.memoryallocation(); 
    E.show(); 
    return 0; 
} 
+0

请举报您正在使用的语言。 – crafter

回答

1

在函数Exam::memoryallocation()中,您再次声明array_2d。

void Exam::memoryallocation() 
{ 
    array_2d = new double*[num]; //remove the redeclaration of array_2d 
    for (unsigned int i = 0; i < num ;i++) 
    { 
     array_2d[i] = new double[num1]; 
    } 
}