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 回答