当我用仪器检测时,我得到了一个内存泄漏。我没有太多的内存管理经验,所以我不知道这个问题的可能原因是什么,内存泄漏如下:


我想知道这种内存泄漏的可能原因。有人能给我一些线索吗?
发布于 2012-05-30 15:43:14
strdup在内部使用malloc,所以任何已经被strdup-ed释放的东西都必须使用free释放。
例如:
char *duplicate = strdup("abcdef");
...
free(duplicate);发布于 2012-05-30 15:53:09
strdup()是一个库函数,因此您需要返回回溯,直到在您的代码中找到调用者。在那里你会发现一个库调用,它导致内存被分配-它应该在你的程序中的其他地方有一个相应的释放调用。
(释放函数不一定是对free()的直接调用-例如,如果调用getaddrinfo()库函数,则相应的释放函数为freeaddrinfo())。
https://stackoverflow.com/questions/10811989
复制相似问题