求教,子程序中为动态二维数组分配的内存,如何在主程序中销毁
主程序中有一个二级指针**a,子程序my_alloc为其分配内存,然后再在主程序中free分配的内存,如下:
程序代码:#include <stdio.h>
#include <stdlib.h>
void my_alloc(double **a)
{
int i;
a = malloc(sizeof(double) * 10);
for (i = 0; i < 10; i++)
a[i] = malloc(sizeof(double) * 20);
}
int main(void)
{
int i;
double **a;
my_alloc(a);
puts("allocate memory ok");
for (i = 0; i < 10; i++)
free(a[i]);
free(a);
puts("release memory ok");
return EXIT_SUCCESS;
}
该程序会在运行到free(a[i])提示段错误。请问,这是什么原因,我该如何做才能在主程序中销毁a的内存。
[ 本帖最后由 hchuan 于 2013-8-31 20:38 编辑 ]









