-1

1)是否还有所谓的内存泄漏工具Boehmgc?该工具与其他工具相比如何?

2) 我用过LeakTracer,mudflapValgrind. 但不幸的是 LeakTracer 有内存占用的缺点(在开始时池化大量内存然后分配它),那么有什么替代方案呢?

4

1 回答 1

4

Boehm GC是一个垃圾收集器,类似于 Java 中的垃圾收集。您提到的其他工具旨在警告您有关泄漏,以便您可以采取纠正措施。垃圾收集旨在在程序运行时查找和恢复不再使用的分配。示例(来自维基百科页面):

#include <assert.h>
#include <stdio.h>
#include <gc.h>

int main(void)
{
    int i;

    GC_INIT();
    for (i = 0; i < 10000000; ++i)
    {
        // GC_MALLOC instead of malloc
        int **p = GC_MALLOC(sizeof(int *));
        int *q = GC_MALLOC_ATOMIC(sizeof(int));

        assert(*p == 0);
        // GC_REALLOC instead of realloc
        *p = GC_REALLOC(q, 2 * sizeof(int));
        if (i % 100000 == 0)
            printf("Heap size = %zu\n", GC_get_heap_size());
    }

    // No free()

    return 0;
}

就个人而言,在 C 或 C++ 中使用垃圾收集有些让我很不安。对于 C++,“智能指针”是我认为在所有权不明确的情况下(尽管您可能想要了解为什么在您的设计中不清楚)和异常安全方面的帮助(例如,现在已弃用std::auto_ptr的情况)的方法专为)

至于检漏仪,您可以添加:

到你的 Linux 列表。

相关的内存检查工具,但不是泄漏:

于 2011-08-29T10:53:39.540 回答