По моему мнению, наиболее ценное различие между функциями GLib и функциями стандартной библиотеки заключается в том, что функции GLib отменяют программу в случае неудачного размещения. Больше не нужно проверять, является ли возвращаемое значение из malloc()
равным NULL
! Кроме этого, нет никакой разницы в стратегии распределения - g_malloc()
вызывает malloc()
внутри, хотя, как говорится в одном из других ответов, это можно изменить.
Другое отличие состоит в том, что функции GLib позволяют выполнять (элементарную) проверку утечки памяти с помощью g_mem_profile()
.
GLib также имеет распределитель слайсов , который более эффективен, если вы выделяете много кусков памяти одинакового размера. Это не использует систему malloc()
и free()
, но опять же, это можно изменить для целей отладки.