视觉 Strlen 返回未定义的行为与C++

visual Strlen returns undefined behaviour with C++

本文关键字:C++ Strlen 返回 未定义 视觉      更新时间:2023-10-16
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

对于那些急于发布的人来说,这是一个重复的问题。我想说,这根本不是机会。因为我知道编译时和运行时以及许多其他有关strlensizeof的事情,但我找不到这个结果的解释。

提前感谢您的帮助。

由于您正在分配一个 char 数组但不对其进行初始化,因此strlen()将从tab指针的开头计数到第一个 NUL 字符。因此,结果取决于程序堆的内容。