C语言以及如何从二维字符数组中释放内存?

时间:2017-11-08 15:52:55

标签: arrays multidimensional-array

在下面的代码中我如何尝试释放内存,我收到消息: 分段错误(核心转储):

char *str = "15:14:34:-32:1076:-4177:0";
char *strarr = (char**) malloc((n*sizeof(char*)));
    strcp = strdup(str);

    strspt = strtok(strcp, ":");

    strarr[cont] = strspt;

    while(strspt)
    {
        cont++;
        strspt = strtok(NULL, ":");
        strarr[cont] = strspt;
    }

    strarr[cont] = NULL;

当我尝试用以下内容释放记忆时:

    for(int i=0; i<n; i++) {
        free(strarr[i]);
    }

我收到消息: 分段错误(核心转储)

1 个答案:

答案 0 :(得分:0)

您只为strarrstrcp分配了动态内存(即使用strdup)。所以只能解放他们。

像:

free(strcp);    // Free the memory allocated by strdup
free(strarr);   // Free the memory allocated by malloc

顺便说一句:你的代码没有显示,我认为cont被初始化为零