进程终止,状态为-1073741819 mid loop?

时间:2016-11-12 03:17:31

标签: c

C中的初学者,并且遇到了初始化数组的函数问题。在代码中编译:Windows 10上的块16.01。我遇到问题的具体代码是:

void initAuction(float auction[2][MAXAUCTIONITEMS]) {
    int i;

    for (i = 0; i < MAXAUCTIONITEMS; i++) {
        auction[1][i] = -1;
        printf("\n%f\t%d\n", auction[1][i], i);
    };
    for (i = 0; i < MAXAUCTIONITEMS; i++) {
        auction[2][i] = 0;
        printf("\n\n%f\t%d", auction[2][i], i);
    }
    printf("\n%f\n", auction[2][70]);
    return;
}

我已经设置了print语句,看看我在崩溃之前得到了多远,然后我将它转到第二个for循环,但它在i = 140时崩溃了。如果我改变常数(等于1000)那么我可以将其设置为最高而不会崩溃,因为i <84非常奇怪。什么会导致终止状态-1073741819中间循环当第一行初始化没有问题但第2行选择在i = 140附近崩溃。

我尝试在谷歌和这里搜索,似乎终止代码不是一个非常具体的代码,因为我已经看到需要一个返回语句的解决方案,试图访问不存在的东西等。真的丢失。

2 个答案:

答案 0 :(得分:2)

有效索引为auction[0][*]auction[1][*]

答案 1 :(得分:1)

您正在设置数组的元素超出其边界:auction的初始维度为2,此索引的唯一有效值为01

您可以通过以下方式修复和简化代码:

void initAuction(float auction[2][]) {
    for (int i = 0; i < MAXAUCTIONITEMS; i++) {
        auction[0][i] = -1;
        auction[1][i] = 0;
    }
}

请注意,第二个维度不是auction类型的一部分,编译器会忽略它。