char **test() {
char **res = (char **)malloc(sizeof(char *) * 5);
for (int cur = 0; cur < 3; cur++) {
char *str = (char *)malloc(10);
strcpy(str, "Maneger");
res[cur] = (char *)malloc(strlen(str));
strcpy(res[cur], str);
free(str);
}
res[3] = NULL;
return res;
}
int main(int argc, char *argv[]) {
char **li = test();
//some code
free(li);
return 1;
}
free()
有什么问题吗?在上面的代码中。正确吗?
最佳答案
您忘记为终止空字符分配空间。
线路
res[cur]=(char *)malloc(strlen(str));
应该是
res[cur]=(char *)malloc(strlen(str) + 1);
还应添加检查 malloc()
的返回值是否为 NULL
。
关于c - 如何确保 malloc 和 free 中没有遗漏某些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45771732/