我有一个关于 GLib 的问题。我想在服务器上下文中使用 GLib,但我不知道如何管理内存: https ://developer.gnome.org/glib/stable/glib-Memory-Allocation.html
如果任何分配内存的调用失败,应用程序就会终止。这也意味着无需检查调用是否成功。
如果我查看源代码,如果 g_malloc 失败,它会调用 g_error:
g_error()
定义 g_error(...)
用于记录错误消息的便捷函数/宏。错误消息总是致命的,导致调用 abort() 来终止应用程序。[...]
但在我的情况下,当我正在开发一个服务器应用程序时,我不希望应用程序退出,我更喜欢作为传统的 malloc 函数,GLib 函数返回 NULL 或指示发生错误的东西。
所以,我的问题是,有办法处理内存不足吗?不建议将 GLib 用于服务器用途的应用程序吗?
如果我看看 man of abort 我可以看到我可以处理信号,但我会让内存不足错误的管理有点痛苦......
abort() 函数会导致程序异常终止,除非信号 SIGABRT 被捕获并且信号处理程序没有返回。
谢谢你的帮助!