Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;导致应用程序崩溃的函数 我现在对为什么这个C++函数不断破坏我的当前程序感到困惑。 你可能会看到我来自java背景,现在我非常热衷于学习C++语言。_C++_Arrays_Pointers_Matrix - Fatal编程技术网

C++;导致应用程序崩溃的函数 我现在对为什么这个C++函数不断破坏我的当前程序感到困惑。 你可能会看到我来自java背景,现在我非常热衷于学习C++语言。

C++;导致应用程序崩溃的函数 我现在对为什么这个C++函数不断破坏我的当前程序感到困惑。 你可能会看到我来自java背景,现在我非常热衷于学习C++语言。,c++,arrays,pointers,matrix,C++,Arrays,Pointers,Matrix,此函数用于在每个位置用新节点填充节点类型的二维数组。我想使用2D数组,而不是向量,因为这是我试图编写的数独解算器 当我构建和运行应用程序时,它只是崩溃并说: “SudokuSolver.exe已停止工作” 问题签名: 问题事件名称:BEX 应用程序名称:SudokuSolver.exe 应用程序版本:0.0.0.0 应用程序时间戳:55283d72 故障模块名称:MSVCR110.dll 故障模块版本:11.0.51106.1 故障模块时间戳:5098858e 异常偏移量:000a326c 异常

此函数用于在每个位置用新节点填充节点类型的二维数组。我想使用2D数组,而不是向量,因为这是我试图编写的数独解算器

当我构建和运行应用程序时,它只是崩溃并说:

“SudokuSolver.exe已停止工作” 问题签名: 问题事件名称:BEX 应用程序名称:SudokuSolver.exe 应用程序版本:0.0.0.0 应用程序时间戳:55283d72 故障模块名称:MSVCR110.dll 故障模块版本:11.0.51106.1 故障模块时间戳:5098858e 异常偏移量:000a326c 异常代码:c0000409 异常数据:0000000 7 操作系统版本:6.3.9600.2.0.0.768.101 区域设置ID:1033 补充资料1:332b 附加信息2:332b994896f66a7b5d5fb96032f7fbd2 附加信息3:2fa1 附加信息4:2fa12dec635ddb7f7a8e7c8690abd06a

我在C++中使用Eclipse进行代码。 下面是讨论中的函数

void fillArray(Node grid[][matrixSizeY], string filePath) {

    int index = 0;

    ifstream inFile;

    inFile.open(filePath);

    // Check for Errors
    if (inFile.fail()) {
        cerr << "Error Opening File" << endl;
        exit(1);
    }

    while (!inFile.eof()) {

        string line;

        getline(inFile, line);

        // Get a Vector of each character in the String
        vector<string> data;
        Utilities::splitEachCharacter(line, data);

        printVect(data);

        for (int i = 0; i < matrixSizeY; i++) {

            string temp = data[i];

            int value = stoi(temp, nullptr, 0);

            Node node(index, i, value);

            grid[index][i] = node;
        }

        data.clear();
        line = "";
        index++;
    }
}
但我真的很困惑,如何制作这样的指针数组。如能提供一些帮助和澄清/解释,将不胜感激

提前谢谢

更新:

该函数现在正在工作,我做了以下更改:

// Function Definition
void fillArray(Node (&grid)[matrixSizeX][matrixSizeY], string filePath);

异常代码对应于堆栈缓冲区溢出。这可能表示某些嵌套调用没有结束,或者局部变量大小过大,可以用编译参数解决。事实上,台词

Node node(index, i, value);
grid[index][i] = node;

至少暗示使用节点结构的复制构造函数。请注意,您通过值传递节点网格[][matrixSizeY],而不是引用(返回时您的工作将丢失),并且如果数组较大,副本将对缓冲区收费。接下来,您不需要指定第一个数组维度(这是合法的?我很不确定,因为我认为只有最后一个维度是可选的)

“希望使用2D数组而不是向量,因为这是针对我正在尝试编写的数独解算器。”
while(!infle.eof())
是错误的,它应该是
while(getline(infle,line))
。不要使用原始指针和新指针。如果节点很小,只需按值返回节点。谢谢大家的宝贵意见!每一个帮助我找出错误是什么,谢谢你的帮助,我意识到我做了很多事情不正确,学习C++后,java被证明是相当棘手的。我觉得我应该从前者开始。如果您感兴趣,请查看我的编辑以查看我的更改。
Node node(index, i, value);
grid[index][i] = node;