Valgrind用libobjc显示泄漏的记忆

时间:2012-08-31 01:19:17

标签: objective-c gcc memory-leaks libobjc

试图追踪我在这里缺少的东西。

在CentOs5上运行。

我把它归结为一个简单的简单程序,最终导致内存泄漏。 不确定这是Valgrind中的错误还是libobjc中的错误。

的main.m

int main(){return 0;}

我编译并用gcc链接它

gcc main.m -o main -lobjc

当我跑valgrind main时,我得到了泄露的内存

==27005== HEAP SUMMARY:
==27005==     in use at exit: 8,485 bytes in 133 blocks
==27005==   total heap usage: 145 allocs, 12 frees, 11,053 bytes allocated
==27005==
==27005== LEAK SUMMARY:
==27005==    definitely lost: 16 bytes in 1 blocks
==27005==    indirectly lost: 16 bytes in 1 blocks
==27005==      possibly lost: 0 bytes in 0 blocks
==27005==    still reachable: 8,453 bytes in 131 blocks
==27005==         suppressed: 0 bytes in 0 blocks

如果我没有链接libobjc(请关闭-lobjc),我没有内存泄漏。

想法?

2 个答案:

答案 0 :(得分:0)

也许你的centOS上没有libobjc?我在Mountain Lion上构建并运行您的代码,没有警告或错误。

答案 1 :(得分:0)

嗯......所以看起来像为每个声明的Objective-C类分配了内存。因此,无论您是否使用它们,链接libobjc最终都会在运行时初始化其中一些类。类初始化成本似乎是一次性成本,所以我认为虽然在程序结束时没有释放内存,但实际上并不是泄漏会伤害我,因为内存必须分配给无论如何,整个计划的长度。

尽管如此,有点烦人。希望我能在应​​用程序退出之前释放内存。