使用:
char *x = malloc(1024);
strcpy(x, "asdf");
x = strdup(x);
free(x); // OK
free(x); // Segfault
如果我只是释放一次,我还会泄漏吗?如果是这样,如何避免呢?
答案 0 :(得分:5)
因为忘记了第一个指针而导致内存泄漏。这样做:
char * x = malloc(1024);
strcpy(x, "asdf");
char * y = strdup(x);
free(x);
free(y);