4

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

在此处输入图像描述

在此处输入图像描述

我想知道这种内存泄漏的可能原因。有谁能给我一些线索吗?

4

2 回答 2

2

strdup在内部使用malloc,所以任何已经被strdup-ed 的东西都必须使用free.

例如:

char *duplicate = strdup("abcdef");
...
free(duplicate);
于 2012-05-30T07:43:14.067 回答
1

strdup()是一个库函数,因此您需要备份回溯,直到找到代码中的调用者。在那里你会发现一个导致内存被分配的库调用——它应该在你的程序的其他地方有一个相应的释放调用。

(释放函数不一定是直接调用free()- 例如,如果您调用getaddrinfo()库函数,则相应的释放函数是freeaddrinfo())。

于 2012-05-30T07:53:08.823 回答