我正在使用 C 字符串库的 strlen 函数。我传递了一个 NULL 字符串并找到神秘的结果。我知道我不应该传递 NULL 字符串,但我需要一个解释。代码看起来像这样
main()
{
int k;
char *s=NULL;
strlen(s);
// k = strlen(s);
}
在我的 gcc 编译器上,注释运行良好。
但如果您要删除该行中的评论
k=strlen(s);
它会产生段错误。 有什么解释吗?
最佳答案
第一个未分配其返回值的“strlen”调用可能已被您的编译器优化。
关于无法保存 strlen 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370471/