小文本处理程序中的分段错误

jor*_*ris 1 c++ segmentation-fault

我有一个c ++函数read_inputdata来读取一些inputfile并将值写入一个数组.我首先声明一个适当长度的数组,并使用函数我用输入文件中的值填充它.

但是我遇到了分段错误.有谁知道我做错了什么?

#define MAX 140160
void read_inputdata(double input[MAX], char files[40]);

char inputfiles1[40] = "input/Hesse04/FR_Hes_rad.txt";
std::cout << "Declaring the arrays" << std::endl;
double input1[MAX];
std::cout << "Calling function read_inputdata" << std::endl;
read_inputdata(input1, inputfiles1);
Run Code Online (Sandbox Code Playgroud)

当我编译并运行它时,我得到:

Declaring the arrays
Calling function read_inputdata
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

所以目前他称这个功能read_inputdata出了问题,因为他没有达到std::cout << "In function read_inputdata" << std::endl;.

功能:

void read_inputdata(double input[MAX], char files[40])
{
    std::cout << "In function read_inputdata" << std::endl;
    std::ifstream inputfile;
    inputfile.open(files);
    if (inputfile.is_open())
    {
        char temp[100];
        double getal[2][MAX];
        int i = 0;
        while(!inputfile.getline(temp, 100).eof())
        {
            char delims[] = "\t ,";
            char *result = NULL;
            result = strtok( temp, delims );
            int j=0;
            while( result != NULL )
            {
                getal[j][i]=atof(result);
                result = strtok( NULL, delims );
                j++;
            }
            i++;
        }
        inputfile.close();
        for (int i = 0; i < MAX; i++)
        {
            input[i] = getal[1][i];
        }
    }
    else std::cout << "WARNING: unable to open file" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

une*_*lue 6

可能耗尽了堆栈.请使用指针,动态分配甚至更好的std :: vector.

#define MAX 140160
void read_inputdata(double *input, char *files);

char inputfiles1[40] = "input/Hesse04/FR_Hes_rad.txt";
std::cout << "Declaring the arrays" << std::endl;
double *input1 = new double[MAX];
std::cout << "Calling function read_inputdata" << std::endl;
read_inputdata(input1, inputfiles1);
Run Code Online (Sandbox Code Playgroud)