2

と:

char *x = malloc(1024);
strcpy(x, "asdf");
x = strdup(x);
free(x); // OK
free(x); // Segfault

一度解放しただけでも漏れはありますか?もしそうなら、それを回避する方法は?

4

1 に答える 1

5

最初のポインタを忘れたため、メモリがリークします。このようにしてください:

char * x = malloc(1024);
strcpy(x, "asdf");
char * y = strdup(x);

free(x); 
free(y);
于 2012-12-21T23:58:12.763 に答える