glib文档缺少许多我认为API文档绝对应该包含的重要内容。例如,g_malloc的条目说没有关于它会在内存分配失败时崩溃(与标准malloc
的行为形成鲜明对比,其名称暗示它模拟物)。只有当您碰巧注意到还有一个名为g_try_malloc的变体并阅读其描述时,您才会被告知g_try_malloc
尝试分配n_bytes,并在失败时返回NULL。对比 使用g_malloc(),在失败时中止程序。
现在对于这个问题,glib有一个函数g_strdup
,它也没有提到可能返回NULL的任何内容。我认为它不会,因为暗示它将在内部使用g_malloc。会吗?
答案 0 :(得分:4)
但文档确实说了。请查看GLib手册中"Memory Allocation"页面的介绍部分:
如果分配内存的任何调用失败,则终止应用程序。这也意味着无需检查呼叫是否成功。
这适用于任何分配内存的库调用,因此也适用于g_strdup()
。