mac上的valgrind堆摘要错误
我的valgrind总是说我分配了很多东西,尽管我不是。我刚刚做了一个main,返回0并运行valgrind,它返回了这个。我刚刚重置了我的电脑 我不知道这是否有什么不同,但我使用的是mac Yosemite,但它也发生在El Capitan上,很快我也会在Sierra上进行测试。 我能做些什么来把valgrind的“allocs”和“绝对失败”归零吗?有了这样的日志,我永远不知道我是否正确地释放了所有内容 即使我没有包含任何库,这种情况也会发生mac上的valgrind堆摘要错误,c,macos,valgrind,C,Macos,Valgrind,我的valgrind总是说我分配了很多东西,尽管我不是。我刚刚做了一个main,返回0并运行valgrind,它返回了这个。我刚刚重置了我的电脑 我不知道这是否有什么不同,但我使用的是mac Yosemite,但它也发生在El Capitan上,很快我也会在Sierra上进行测试。 我能做些什么来把valgrind的“allocs”和“绝对失败”归零吗?有了这样的日志,我永远不知道我是否正确地释放了所有内容 即使我没有包含任何库,这种情况也会发生 ==11011== HEAP SUMMARY:
==11011== HEAP SUMMARY:
==11011== in use at exit: 34,527 bytes in 414 blocks
==11011== total heap usage: 514 allocs, 100 frees, 41,503 bytes
allocated
==11011==
==11011== LEAK SUMMARY:
==11011== definitely lost: 16 bytes in 1 blocks
==11011== indirectly lost: 0 bytes in 0 blocks
==11011== possibly lost: 0 bytes in 0 blocks
==11011== still reachable: 0 bytes in 0 blocks
==11011== suppressed: 34,511 bytes in 413 blocks
我不担心这个-这是一个小数目,可能与系统有关。专注于工具在代码中识别的问题 如果打开所有内存泄漏选项,您可能会获得更多详细信息,例如
--memcheck:leak-check=full --memcheck:show-reachable=yes
--memcheck:show-possibly-lost=yes --memcheck:track-origins=yes --verbose
我不担心这个-这是一个小数目,可能与系统有关。专注于工具在代码中识别的问题 如果打开所有内存泄漏选项,您可能会获得更多详细信息,例如
--memcheck:leak-check=full --memcheck:show-reachable=yes
--memcheck:show-possibly-lost=yes --memcheck:track-origins=yes --verbose
与其说是内存丢失的数量,不如说是监控自己内存消耗和潜在内存泄漏的能力。我认为他希望有一个干净的基础来编写代码是正确的。确切地说,问题是,这样我就不知道我是否分配了比释放更多的资源,以及诸如此类的事情。现实地说,你能对此做些什么?让苹果更换macOS?不太可能。在Valgrind找到一个补丁。大概只要这是一个常数且很小,就不必担心。设置mach调用可能会有开销,或者可能与动态链接器有关。即使你不使用任何库,它也会使用libsystem,这就是厨房水槽,包括libc以及OS X上的许多其他东西。是的,我使用--leak check=full运行valgrind,你说得对,Lucas Holt。它在libsystem上。你知道我能做些什么吗?与其说是内存丢失量,不如说是监控他自己的内存消耗和潜在的内存泄漏。我认为他希望有一个干净的基础来编写代码是正确的。确切地说,问题是,这样我就不知道我是否分配了比释放更多的资源,以及诸如此类的事情。现实地说,你能对此做些什么?让苹果更换macOS?不太可能。在Valgrind找到一个补丁。大概只要这是一个常数且很小,就不必担心。设置mach调用可能会有开销,或者可能与动态链接器有关。即使你不使用任何库,它也会使用libsystem,这就是厨房水槽,包括libc以及OS X上的许多其他东西。是的,我使用--leak check=full运行valgrind,你说得对,Lucas Holt。它在libsystem上。你知道我能做些什么吗?