什么是崩溃导致故障?
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
.
问题是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
.