g_strdup在内存分配失败时是否返回NULL?

时间:2011-09-14 12:27:55

标签: api memory-management glib

glib文档缺少许多我认为API文档绝对应该包含的重要内容。例如,g_malloc的条目说没有关于它会在内存分配失败时崩溃(与标准malloc的行为形成鲜明对比,其名称暗示它模拟物)。只有当您碰巧注意到还有一个名为g_try_malloc的变体并阅读其描述时,您才会被告知g_try_malloc

  

尝试分配n_bytes,并在失败时返回NULL。对比   使用g_malloc(),在失败时中止程序。

现在对于这个问题,glib有一个函数g_strdup,它也没有提到可能返回NULL的任何内容。我认为它不会,因为暗示它将在内部使用g_malloc。会吗?

1 个答案:

答案 0 :(得分:4)

但文档确实说了。请查看GLib手册中"Memory Allocation"页面的介绍部分:

  

如果分配内存的任何调用失败,则终止应用程序。这也意味着无需检查呼叫是否成功。

这适用于任何分配内存的库调用,因此也适用于g_strdup()