Man*_*res 7 c memory malloc performance glib
我倾向于使用std*alloc/free函数在我的C程序中分配/释放动态内存.我想知道是否有充分的理由使用GLIB内存分配功能而不是标准功能.
如果社区可以指出这些解决方案中的任何一个是赢家/更宽松的情况,我将不胜感激.我也对我在使用其中一个时遇到的性能问题感兴趣.
谢谢 !
编辑到州平台
这些程序通常在所有类型的Linux/Unix发行版上运行,通常是使用gcc 4.2编译的64位arch.
在我看来,GLib函数和标准库函数之间最有价值的区别是如果分配失败,GLib函数会中止程序.没有更多的检查,看看如果返回值的malloc()
是NULL
!除此之外,分配策略没有区别 - 内部g_malloc()
调用malloc()
,尽管这是其中一个其他答案,但可以改变它.
另一个区别是GLib函数允许您使用(基本)内存泄漏检查g_mem_profile()
.
GLib还有一个切片分配器,如果你要分配许多相同大小的内存块,它会更有效.这不使用系统malloc()
和free()
,但同样,有可能改变这种状况进行调试.