strdup(null) 转储核心。

在 ubuntu 和 freeBSD 上都试过了。

为什么?它不应该返回null吗?

char *b = NULL;
a = strdup(b);

这将在 strdup 调用时转储核心。

最佳答案

没关系。

documentation 意味着它的参数必须是字符串,如果它是其他东西,例如空指针,任何人都会猜测会发生什么。本质上,当将 NULL 指针传递给 strdup 时,您会得到未定义的行为。

如果你传递一些你不应该传递的东西,函数产生未定义的行为是很正常的。许多标准 C 函数如 strcpy、strlen 也不接受空指针。

关于c - strdup 在传递 NULL 时转储核心,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6432384/

10-12 17:17