在下面的代码中我如何尝试释放内存,我收到消息: 分段错误(核心转储):
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]);
}
我收到消息: 分段错误(核心转储)
答案 0 :(得分:0)
您只为strarr
和strcp
分配了动态内存(即使用strdup
)。所以只能解放他们。
像:
free(strcp); // Free the memory allocated by strdup
free(strarr); // Free the memory allocated by malloc
顺便说一句:你的代码没有显示,我认为cont
被初始化为零