gpt4 book ai didi

c - 阵列分配导致终端挂起

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:58 24 4
gpt4 key购买 nike

我无意中看到这段代码:

#include<stdio.h>
int main()
{
int i;
int array[3];
for(i=0;i<=3;i++)
array[i]=0;
return 0;
}

运行此代码时,我的终端挂起 - 代码未终止。

当我用 2 替换 3 时,代码运行成功并没有问题终止。在 C 语言中没有对数组进行绑定(bind)检查,那么导致它不终止的上述代码有什么问题?

平台 - Ubuntu 10.04编译器-gcc

最佳答案

仅仅因为没有边界检查并不意味着写越界就没有后果。这样做会调用未定义的行为,所以不知道会发生什么。

这一次,在这个编译器上,在这个架构上,碰巧当你写入 array[3] 时,你实际上将 i 设置为零,因为 i 是位于堆栈中 array 之后。

关于c - 阵列分配导致终端挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565089/

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