C 使用Free()释放动态内存

C 使用Free()释放动态内存,c,memory,dynamic,free,C,Memory,Dynamic,Free,但这不是真的。任何帮助都将不胜感激根据您对代码的描述猜测,您的内存分配将是: free(*last_names); free(last_names); last_names=malloc(4*sizeof(char*); 对于(int i=0;i

但这不是真的。任何帮助都将不胜感激

根据您对代码的描述猜测,您的内存分配将是:

free(*last_names);
free(last_names);
last_names=malloc(4*sizeof(char*);
对于(int i=0;i<4;i++)
姓氏[i]=malloc(20*sizeof(char));
因此,应按如下方式进行解除分配:

last_names = malloc(4 * sizeof(char*));
for (int i = 0; i < 4; i++)
    last_names[i] = malloc(20 * sizeof(char));
for(int i=0;i<4;i++)
免费(姓氏[i]);
免费(姓氏);

不要描述您的分配,而是在代码中显示。请添加以下代码:(1)分配
姓氏
,以及(2)将单个元素分配给
姓氏
last_names = malloc(4 * sizeof(char*));
for (int i = 0; i < 4; i++)
    last_names[i] = malloc(20 * sizeof(char));
for (int i = 0; i < 4; i++)
    free(last_names[i]);
free(last_names);