gpt4 book ai didi

c++ - 数组段错误

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

我有两个关于数组的问题:

第一个是关于以下代码:

int a[30];  //1
a[40]=1; //2

为什么第 2 行没有给出段错误,它应该给出因为数组已经分配只有 30 个 int 空间和在其分配空间之外的任何取消引用都应该产生段错误。

第二:假设上面的代码有效,a[40] 是否有可能被覆盖,因为它没有出现在 arrray 的保留范围内。

提前致谢。

最佳答案

那是未定义的行为——它可能会崩溃,可能会默默地破坏数据,可能不会产生任何可观察到的结果,等等。不要这样做。

在您的示例中,可能的解释是数组是堆栈分配的,因此数组周围有大量地址可供写入,因此没有立即可观察到的结果。但是,根据堆栈在您的系统上的增长方式(哪个方向 - 到更大的地址或更小的地址),这可能会覆盖调用堆栈上的返回地址和临时函数,这将使您的程序崩溃或使其在尝试时行为不端从函数返回。

关于c++ - 数组段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4678793/

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