作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
应用程序的输出(底部)如下:
元素索引号:0 元素内容:22
元素索引号:1 元素内容:22
元素索引号:2 元素内容:22
元素索引号:3 元素内容:22
元素索引号:4 元素内容:22
元素索引号:22 元素内容:134513712
为什么标记为 5 - 21 的索引元素被遗漏了?我知道这段代码可能会由于数组的边界溢出而发生段错误,它就是为此而设计的,我对为什么这段代码不好,只是为什么跳过某些索引不感兴趣。
#include <stdio.h>
int main(){
int array[5];
int i;
for(i=0; i<10; ++i) {
array[i] = 22;
printf("Element index number: %d Element contents: %d\n", i, array[i]);
}
return 0;
}
最佳答案
一旦您溢出分配的内存,您就处于“未定义的领域”。可能是数组写入写入了“i”在堆栈中的存储位置。
请注意,与 Java 和 C# 等语言不同,C 不进行运行时边界检查,因此当您溢出数组或字符串或 malloc 内存时,不能保证它会做任何有用的事情(如段错误)。它不能保证做任何事情。它可能会崩溃,也可能会继续运行,it could cause demons to fly out your nose .
关于c - For循环缺少段错误的几个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936029/
我是一名优秀的程序员,十分优秀!