视觉 Strlen 返回未定义的行为与C++
visual Strlen returns undefined behaviour with C++
int main ()
{
char* tab=new char[14] ;
cout << " lenght with sizeof: "<<sizeof(tab)<<endl;
cout << " length with strlen: "<<strlen(tab)<<endl;
system(" pause");
return 0;
}
我得到了输出:
长度(尺寸(: 4
带链长度:30
我期待sizeof
的结果,但不是回报strlen
!
对于那些急于发布的人来说,这是一个重复的问题。我想说,这根本不是机会。因为我知道编译时和运行时以及许多其他有关strlen
和sizeof
的事情,但我找不到这个结果的解释。
提前感谢您的帮助。
由于您正在分配一个 char 数组但不对其进行初始化,因此strlen()
将从tab
指针的开头计数到第一个 NUL 字符。因此,结果取决于程序堆的内容。
相关文章:
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- std::strlen 在内部是如何工作的?
- 为什么strlen(s)与s的大小不同,为什么cout-char显示的是字符而不是数字
- C++编译 strlen 和 strcpy 的问题
- c 字符串 c++ 中 strlen 的递归版本
- 为什么emplace_back("Hello")调用strlen?
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- 无法执行内部函数 strlen
- strlen 是否针对字符串文字进行了优化?
- CPP - strlen 不会输出多个单词的整个长度 [仅限 C 字符串]
- 字符指针的长度使用 strlen() 不正确
- 如何获取字符*的实际长度?strlen 和 sizeof(target)/sizeof(target*)之间的区别?
- SEGEGV 带长弦的 strlen
- 编译失败:strlen 不是 std 的成员
- 对Strcat和Strlen功能的深刻理解
- 如果 strlen 在 char 数组之间遇到空格,它会怎么做
- 如何修复strlen seg故障
- 恒定字符阵列的获取字符串长度函数(strlen)不是恒定表达式
- C++ strlen() 初始化的字符数组
- strlen 显示数组元素的数量错误