当我用仪器检测时出现内存泄漏。我对内存管理没有太多经验,所以我无法弄清楚这个问题的可能原因是什么,内存泄漏如下:


我想知道这种内存泄漏的可能原因。有谁能给我一些线索吗?
当我用仪器检测时出现内存泄漏。我对内存管理没有太多经验,所以我无法弄清楚这个问题的可能原因是什么,内存泄漏如下:


我想知道这种内存泄漏的可能原因。有谁能给我一些线索吗?
strdup在内部使用malloc,所以任何已经被strdup-ed 的东西都必须使用free.
例如:
char *duplicate = strdup("abcdef");
...
free(duplicate);
strdup()是一个库函数,因此您需要备份回溯,直到找到代码中的调用者。在那里你会发现一个导致内存被分配的库调用——它应该在你的程序的其他地方有一个相应的释放调用。
(释放函数不一定是直接调用free()- 例如,如果您调用getaddrinfo()库函数,则相应的释放函数是freeaddrinfo())。