gpt4 book ai didi

c++ - 为什么当我在数组外部写入时我的程序不会崩溃?

转载 作者:行者123 更新时间:2023-11-30 21:21:31 24 4
gpt4 key购买 nike

int main()
{
char str[2];
strcpy(str,"0123456789");
for (int i=0;str[i]!='\0';i++)
{
printf("%c %d \n",str[i],i);

}

return 0;
}

不确定这是如何工作的,但它不会崩溃。鉴于数组已被声明为仅包含 2 个元素,它如何保存整个“0-9”元素并打印出以下内容:0 0 ,1 1 ,2 2 ,3 3 ,4 4 ,5 5 ,6 6 ,7 7 ,8 8 ,9 9

最佳答案

这是未定义的行为:复制到 str 中的字符数量超出了它所能容纳的字符数量。 (不)幸运的是,程序没有崩溃;但这并不能说明它是正确的。

正是这个问题(不正确的程序看起来工作正常)是调试 C 代码的主要障碍:程序员不能仅通过运行程序来检测无效行为。处理此问题的一种方法是通过内存分析器运行程序,例如 valgrind 。该工具会立即告诉您程序执行了无效操作,需要修复。

关于c++ - 为什么当我在数组外部写入时我的程序不会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com