【发布时间】:2015-11-29 18:37:42
【问题描述】:
我在 main 中创建了一个 double int 指针并调用了一个函数,我在其中为这个指针分配了位置。
void foo(int **array)
{
int i, j;
array = (int **)malloc(sizeof(int *)*(100)); //rows
for(i=0; i<100; i++)
array[i] = (int *)malloc(sizeof(int)*(50)); //cols
array[0][0] = 10;
}
主要我只有这些行;
int** array;
foo(array);
printf("%d \n", array[0][0]);
因此,我遇到了分段错误。由于我正在传递一个指针并且它是在foo 方法中分配的,这是否意味着在main 方法中它没有被分配?如何在不使foo 函数返回双指针的情况下解决它?
【问题讨论】:
-
大量重复,搜索pass by reference in c。
-
为什么不直接返回指针呢?你的函数是
void。 -
并且总是检查错误情况!
-
如果你不知道,你可以写
int (*array)[50] = malloc( sizeof(int[100][50]) );来避免所有这些垃圾