Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
malloc+;内存泄漏?_C_Memory_Memory Management_Malloc_Strdup - Fatal编程技术网

malloc+;内存泄漏?

malloc+;内存泄漏?,c,memory,memory-management,malloc,strdup,C,Memory,Memory Management,Malloc,Strdup,与: 如果我只释放它一次,我还会泄漏吗?如果是这样,如何避免它呢?由于忘记了第一个指针而导致内存泄漏。这样做: char *x = malloc(1024); strcpy(x, "asdf"); x = strdup(x); free(x); // OK free(x); // Segfault char * x = malloc(1024); strcpy(x, "asdf"); char * y = strdup(x); free(x); free(y);

与:


如果我只释放它一次,我还会泄漏吗?如果是这样,如何避免它呢?

由于忘记了第一个指针而导致内存泄漏。这样做:

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

free(x); 
free(y);