我已经定义了函数,它返回多维数组。
行分配
arr = (char **)malloc(size);
列分配(循环中)
arr[i] = (char *)malloc(v);
并且返回类型是 char**
一切正常,除了释放内存。如果我在函数返回的数组上调用 free(arr[i]) 和/或 free(arr),它就会崩溃。
编辑:
分配函数
pole = malloc(zaznamov);
char ulica[52], t[52], datum[10];
float dan;
int i = 0, v;
*max = 0;
while (!is_eof(f))
{
get_record(t, ulica, &dan, datum, f);
v = strlen(ulica);
pole[i] = malloc(v);
strcpy(pole[i], ulica);
pole[i][v-1] = '\0';
if (v - 1 > *max)
{
*max = v;
}
i++;
}
return pole;
我正在调用函数的 main 的一部分
pole = function();
释放内存
int i;
for (i = 0; i < zaznamov; i++)
{
free(pole[i]);
pole[i] = NULL;
}
free(pole);
pole = NULL;