【发布时间】:2013-06-07 00:10:31
【问题描述】:
我有一个关于 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 被捕获并且信号处理程序没有 返回。
感谢您的帮助!
【问题讨论】: