代码的前几部分:
typedef struct
{
double sr, med;
int **t;
}wynik;
wynik calc(int *t[], int size)
{
int i, *niep = NULL, j = 0, k = 1, sum = 0;
int *sorted = (int*)malloc(size*sizeof(int));
wynik out;
//coping, sorting
for (i = 0; i < size; i++)
sorted[i] = (*t)[i];
qsort(sorted, size, sizeof (**t), cmp);
out.t = &sorted;
...
return out;
}
然后在main()中:
wynik get = calc(&tab, tab_size);
使用调试器我发现在calc()中out.t指向一个数组,但在main()中,get.t指向一些奇怪的东西。 如何解决?
答案 0 :(得分:3)
out.t
包含局部变量sorted
的地址。当函数返回时,该地址不再有效,因为局部变量超出了范围。
我认为out.t
应该是int**
而不是int*
。如果您将其更改为int*
并仅使用out.t = sorted
设置其值,那么它应该可以正常工作。