【发布时间】:2019-10-19 20:59:00
【问题描述】:
我试图在一个单独的函数中动态创建一个数组并将一些变量存储在该数组中,我遇到了以下问题:我写的时候是怎么回事;
#include <stdio.h>
#include <stdlib.h>
void foo(int **arr, int N) {
*arr = malloc(sizeof(int));
for (int index = 0; index <= 4; index++) {
*arr[index] = 1;
}
}
int main() {
int *arr;
foo(&arr, 5);
for (int bar = 0; bar <= 4; bar++) {
printf("%d ", arr[bar]);
}
}
我得到这个输出;
exited, segmentation fault
但是,当我运行以下命令时;
#include <stdio.h>
#include <stdlib.h>
void foo(int **arr, int N) {
*arr = malloc(sizeof(int));
}
int main() {
int *arr;
foo(&arr, 5);
for (int index = 0; index <= 4; index++) {
arr[index] = 1;
}
for (int bar = 0; bar <= 4; bar++) {
printf("%d ", arr[bar]);
}
}
我得到这个输出;
1 1 1 1 1
我一直在试图弄清楚如何修复第一个代码块以使其正常工作,但我似乎不知道该怎么做。任何帮助将不胜感激,至少了解为什么会发生分段错误。
【问题讨论】:
标签: c arrays segmentation-fault