【问题标题】:how to free memory allocated by g_thread_init如何释放 g_thread_init 分配的内存
【发布时间】:2011-12-09 11:30:57
【问题描述】:

我想知道是否可以释放由 g_thread_init(NULL)

这是我的代码:

int main(void)
{    
g_thread_init(NULL);            
g_thread_exit(NULL); 
}

和 valgrind 输出:

==1944== HEAP SUMMARY:
==1944==     in use at exit: 8,910 bytes in 119 blocks
==1944==   total heap usage: 159 allocs, 40 frees, 15,033 bytes allocated

感谢您的帮助。

【问题讨论】:

  • AFAIK 这是不可能的,但我不记得我在哪里看到的解释
  • 也许有一些静态变量在应用程序运行时永远不会被释放。

标签: c multithreading memory-leaks free glib


【解决方案1】:

g_thread_init() 是一个运行一次的函数,用于设置 GLib 中的多线程支持。它分配的内存永远不会被释放。

在较新版本的 GLib (>= 2.32) 中,g_thread_init() 实际上是一个空操作,您根本不需要调用它——所有多线程设置都是在您的程序启动时自动完成的。

所以你的问题的答案是:你不能,你不应该尝试。

【讨论】:

  • 感谢您的回答和有关 GLib 2.32 的信息 :)
猜你喜欢
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2011-05-13
  • 2015-07-30
相关资源
最近更新 更多