永发信息网

C语言会在数组存储结束之后自动阻止继续写入数据么?能不能写一个程序存储数组结束之后输入的数据?

答案:4  悬赏:50  手机版
解决时间 2021-02-26 08:05
C语言会在数组存储结束之后自动阻止继续写入数据么?能不能写一个程序存储数组结束之后输入的数据?
最佳答案
这两个英文问题问的是:
1.当数组越界时,C语言是否会自动保护
2.C语言能否越出数组的界限写入数据
答案: 1.不会 2.是可以的(用指针 指针可以做出很多比如溢出漏洞什么涉及越界) 但是容易造成系统崩溃 因为你不知道后面的数据是不是很重要的 要是别的程序要用的你修改了 会产生想不到的效果
全部回答
你可知道char b[][100]={0};这是什么意思吗?当你不指定第二维的长度,初始化时又没明确指出其长度,那么编译器就会把上式变为:char b[1][100]={0};结果你只开辟了1组100个char的数组,你还以为能有10组,当然错误啦。如果明确包含10个字符串,请明确指定:char b[10][100]={0}; 你这个弹错,意思就是你开辟的内存空间不够,导致strcpy函数运行时缓冲区溢出,这使得程序跳转到一个非法的区域,这个区域被操作系统标记为保护,于是触发“cpu常规保护异常”。 以下仅作谈资,骗分数用的^ ^。 我印象中,如果是“cpu常规保护异常”,可能意味着你这跳转到的地方是操作系统内核区。当cpu以用户权限等级(最低权限等级,你这个main函数执行时,printf函数执行前或执行后是就是这种状态)尝试跳转到/访问需要cpu最高特权等级的区域就会触发这类错误。
不能。C是不检查数组大小。如果越界了,C也是不会 帮你检测的。 这是C程序员应当担负的责任了。。。
是不是数组越界的问题,好比数组长度定义了7,但是你要输出第8个,这是可以的,程序编译不会阻止。其次你要输出的话直接打印比如 a[7] 打印a[8]就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新乡市民顺祥农作物种植专业合作社地址有知道
(7/4-7/8-7/12)x[(-8/7)x13-
入大学系学生会生活部的演讲稿
金达·国际馨园地址在什么地方,想过去办事
动态桌面壁纸怎么设置
苹果手机启动访问限制的密码是多少
湖南省动物疫病预防控制中心我想知道这个在什
同义复词
玉丽养生美容美体地址在哪,我要去那里办事,
怎么让自己变成干净清新类型的女生
已知f(x)=x^2+3x-5 x∈{t,t+1} 若f(x)的
南京 伯利兹侨青幼儿园 怎么样
女生戴表应该戴哪只手
桥头粮油副食商店在什么地方啊,我要过去处理
-1比1小,可是为什么-1+1=0
推荐资讯
请问那里可以买到蓝蝎肽?
天水众发轮胎经销部这个地址在什么地方,我要
买房碰到面积上的事情,请教!
能申请取保候审的是不是说明情节比较轻,如果
c++问题。如何在。h文件中定义初始值,后面。
电信宽带包一年不续费一定要到营业厅去办停网
乌努格图在什么地方啊,我要过去处理事情
串口猎人v31谁能指点下怎么使用
居佳装饰工程有限公司这个地址在什么地方,我
【世界上最大的半岛是】...;世界上最大的半岛
请问,流浪的苦儿 NBA球队名一,梨花格(不分
【七年级上册数学教案】七年级上册数学书72页
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?