【发布时间】:2012-05-30 07:40:20
【问题描述】:
当我使用仪器检测时出现内存泄漏。我对内存管理没有太多经验,所以我无法弄清楚这个问题的可能原因是什么,内存泄漏如下:
我想知道这种内存泄漏的可能原因。有哪位大神可以给点线索吗?
【问题讨论】:
标签: iphone objective-c c memory-leaks
当我使用仪器检测时出现内存泄漏。我对内存管理没有太多经验,所以我无法弄清楚这个问题的可能原因是什么,内存泄漏如下:
我想知道这种内存泄漏的可能原因。有哪位大神可以给点线索吗?
【问题讨论】:
标签: iphone objective-c c memory-leaks
strdup 在内部使用malloc,所以任何被strdup-ed 的东西都必须使用free 来释放。
例如:
char *duplicate = strdup("abcdef");
...
free(duplicate);
【讨论】:
strdup() 是一个库函数,因此您需要返回回溯,直到找到您的 代码中的调用者。在那里你会发现一个导致内存被分配的库调用——它应该在你的程序的其他地方有一个相应的释放调用。
(释放函数不一定是直接调用free()——例如如果你调用getaddrinfo()库函数对应的释放函数是freeaddrinfo())。
【讨论】: