【发布时间】:2016-09-10 03:19:14
【问题描述】:
我今天在一台 Linux 机器上用 C 语言编写了一个链表,并且所有内容都在 Valgrind 中进行了检查。然后我在家里的 OS X 上运行了相同的测试(少量推送,然后删除列表)并获得了疯狂数量的分配。
==4344== HEAP SUMMARY:
==4344== in use at exit: 26,262 bytes in 187 blocks
==4344== total heap usage: 267 allocs, 80 frees, 32,374 bytes allocated
==4344==
==4344== LEAK SUMMARY:
==4344== definitely lost: 0 bytes in 0 blocks
==4344== indirectly lost: 0 bytes in 0 blocks
==4344== possibly lost: 0 bytes in 0 blocks
==4344== still reachable: 0 bytes in 0 blocks
==4344== suppressed: 26,262 bytes in 187 blocks
==4344==
==4344== For counts of detected and suppressed errors, rerun with: -v
==4344== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
我知道代码很好,没有任何泄漏。所以我只是注释掉了列表测试并在主要编译时只使用了printf("test\n");,它显示了 263 个分配和 76 个空闲(我在列表测试中有 4 个有意分配)。为什么我在 OS X 上得到这么多分配?这只是操作系统所做的吗?我不明白为什么我刚做 printf 时会有 263 个分配...
【问题讨论】: