这是我的代码。我试图对malloc元素进行malloc,但我不知道如何释放它们。
char *d = "apple";
int main() {
char *a = malloc(10 * sizeof(char));
char **b = &a;
strcpy(a,d);
printf("%c", *b[0]);
b[0] = malloc(3 * sizeof(char));
free(b[0]);
free(a);
}
之后
char **b = &a;
CCD_ 1与CCD_。所以当你做时
b[0] = malloc(3 * sizeof(char));
您正在用这个新分配替换a
的值。
则CCD_ 4与CCD_。所以,如果你同时做这两件事,你会两次释放同一内存,这是两次释放。
您还泄漏了分配给a
的原始分配,因为您不再有指向该分配的指针。你需要另一个变量来保存它,这样你就可以释放它
char *d = "apple";
int main() {
char *a = malloc(10 * sizeof(char));
char **b = &a;
strcpy(a,d);
printf("%c", *b[0]);
char *c = a; // save a before overwriting it below
b[0] = malloc(3 * sizeof(char));
free(b[0]);
free(c);
}