为了账号安全,请及时绑定邮箱和手机立即绑定

数组索引在C中超出界限

数组索引在C中超出界限

C++
慕虎7371278 2019-06-15 10:39:52
数组索引在C中超出界限为什么C数组索引超出界限的情况下的微分#include <stdio.h>int main(){     int a[10];     a[3]=4;     a[11]=3;//does not give segmentation fault     a[25]=4;//does not give segmentation fault     a[20000]=3; //gives segmentation fault     return 0;}据我所知,它试图访问分配给进程或线程的内存,以防止a[11]或a[25]而且它超出了堆栈的范围,以防.a[20000].为什么编译器或链接器不提供一个错误,难道他们不知道数组的大小吗?如果不是,那如何sizeof(a)工作正确吗?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

如果试图访问进程不拥有的内存,通常只会出现分段错误。

你所看到的a[11](和a[10](顺便提一句)是内存,您的进程是吗?拥有但不属于a[]阵列。a[25000]a[]它可能完全超出了你的记忆。

变幻a[11]由于它会默默地影响不同的变量(或者堆栈框架,这可能会在函数返回时导致不同的分段错误),这就更加阴险了。


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 918 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信