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/