【问题标题】:What's up with GTK+ windows having so many memory leaks according to Valgrind?根据 Valgrind 的说法,GTK+ 窗口有这么多内存泄漏是怎么回事?
【发布时间】:2010-05-21 14:14:47
【问题描述】:

每当我在 valgrind 中加载任何基于 GTK+ 的应用程序时,它都会报告大量内存泄漏。那是怎么回事? GTK+ 有问题吗?

【问题讨论】:

    标签: memory-leaks valgrind gtk


    【解决方案1】:

    GTK+ 和 GLib 不会释放“分配一次”内存。他们遵循这样一种范式,即在进程退出之前释放资源是不必要的,无论如何都会被系统释放(这主要适用于内存)。这当然对调试不太友好,但可以稍微加快程序终止并简化代码(这是 C,即使是“微不足道”的任务也需要一行代码)。

    因此,“仍然可以访问”的内存很可能只是没有被有意释放,而不是泄漏。或者,当然,可能是一个错误。然而,“绝对丢失”的内存几乎可以肯定是一个错误。

    还请注意,程序的内存泄漏错误看起来好像是由 GTK+ 本身触发的。例如,GTK+ 可能会分配一个对象,以便稍后由程序取消引用(和释放),但它没有这样做。 Valgrind 将在 GTK+ 深处显示堆栈跟踪,尽管程序中存在错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 2011-08-09
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多