我有这个代码与 2 个文件交互,但是我在这两个函数中遇到了分段错误,我需要帮助找出原因。fileA.c
将 an 传递int**
给 in 中的函数fileB.c
,int**
用作输出参数,因为我想在 in 中创建一个 int 数组fileB
并foo
指向它,以便我可以在中打印它fileA
。在fileB.c
中,我创建了一个数组,并将指针设置为它。
size 和 foo 在主文件的另一个函数中初始化。它编译得很好,但输出是 (if size == 10
) :
0 1 2 3 4 5 6 7 8 9
分段故障
在fileA.c
:
void testPointing(int size, int** foo) {
initialize(size, foo);
int i;
for(i = 0; i < size; i++) {
printf("%d ", (*foo)[i]);
}
}
fileB.c
:
void initialize(int size, int** foo) {
int* a;
a = (int*)malloc(size * sizeof(int);
int i;
for(int i = 0; i < size; i++) {
printf("%d ", a[i]);
}
printf("\n\n");
foo = &a;
}
我需要帮助来修复和理解为什么会出现分段错误。每当我选择将位于fileA.c
after
foo = &a
in的循环fileB.c
改为时,它都会编译并显示正确的输出。