无法保存 strlen 返回值

标签 c string-length

我正在使用 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/

相关文章:

c - 如何在 C (Windows) 中打印方框字符

c - 教科书 RSA 相同的密文,不同的 key

c++ - 案例扬声器的 C++ 命令是什么?

java - Java 的 toLowerCase() 是否保留原始字符串长度?

比较 2 个不同长度的 char*(不带空终止符)

c - 有多大的 'int' 可以隐式转换为 'char'?

C 结构体、字符串和段错误

mysql - Access : CrossTab Query Increase Data Text 'length' ?

java - 限制用户扫描仪在Java中输入字符串的字符数

python - 比较不同列的字符串长度数据框