gpt4 book ai didi

c - 静态分配的数组在分配超出范围的值时不会溢出

转载 作者:行者123 更新时间:2023-11-30 16:29:27 26 4
gpt4 key购买 nike

为什么这段代码有效?我有一个包含 2 个元素的数组,它应该溢出,但在使用 gcc 的 Linux 上它甚至没有给我一个错误。相反,它工作并输出 5。

int doS(int a[2])
{

printf("%d", a[4]);

}

int main()

{


int rows =2;

int a[rows];

a[0] = 1;
a[1] = 2;
a[2]= 3;
a[3] = 4;
a[4] = 5;

doS(a);
}

最佳答案

无法保证它始终有效! a[2]a[3]a[4] 内存不足。代码的行为称为 Undefined Behaviour

例如,尝试下面的一个。还有效吗?

for (int i = 0; i < 100; ++i) {
a[i] = i + 1;
}

关于c - 静态分配的数组在分配超出范围的值时不会溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51836921/

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