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