什么是崩溃导致故障?

What is the crash causing fault?

问题是i超出数组限制的越界异常吗?

int initfunc(int *array, int len) {
    int i;
    for (i = 1; i <= len; i++) {
        array[i] = i;
    }
    return 0;
}

int main(int argc, char* argv[]) {

    int*  myarray = 0;
    initfunc(myarray, 10);
}
int initfunc(int *array, int len) {
    int i;
    for (i = 1; i <= len; i++) {
        array[i] = i;
    }
    return 0;
}

int main(int argc, char* argv[]) {

    int*  myarray = 0;
    initfunc(myarray, 10);
}

您永远不会在 main 中声明数组的大小。您需要静态或动态分配大小。您当前有一个没有指向任何内容的 int 指针。然后传递该指针并尝试使用以下方式访问它:

array[i] = i;

这是工作代码

int initfunc(int *array, int len) {

    array = new int[len];

    for (int i = 1; i <= len; i++) {
        array[i] = i;
    }
    return 0;
}

int main(int argc, char* argv[]) {

    int*  myarray = 0;
    initfunc(myarray, 10);
}

您提供的代码有两个问题。

第一个问题是您实际上没有为myarray分配任何内存。您刚刚创建了一个指针,它当前指向 NULL.

创建静态数组

int myarray[10];

或动态

int *myarray = new int[10];

第二个问题是您很可能会在 for 循环中访问 array 范围之外的内容。因为数组索引是从零开始的,所以您将检查 i < len,而不是 i <= len.