为什么不会导致分段错误
Why not causing a segmentation error?
#include <iostream>
using namespace std;
int main(){
int a[3], no;
cout << "Index Valuen";
for(int i = 0; i < 100; i++){
cin >> no;
a[i] = no;
cout << i << "t" << a[i] << endl;
}
return 0;
}
在这里我初始化了 a[ 3 ]。 在 for 循环中,我将输入输入 100 次输入到 a[ ],超过了 [ 3 ] 的索引。
为什么在 i 等于 4 之后它不立即给出分割错误。
输入1 2 3 4 5 6 7
输出
Index Value
0 1
1 2
2 3
4 0
5 5
6 6
7 7
当索引等于 4 时输出错误。打印 0 .预期 4
不幸的是,对于调试程序员来说,当你写到数组的末尾时,C 和 C++ 程序通常不会出现段错误。相反,如果操作系统允许的话,它通常会默默地写下指针算术上的任何内容。这通常会覆盖其他变量甚至程序代码,从而导致混乱和不可预测的错误。
我在这里使用了"通常"这个词,因为根据标准,这是"未定义的行为"——也就是说,编译器和运行时可以做任何他们喜欢的事情。
在开发和测试时,使用诸如 electricfence
之类的库非常有用,它会对内存操作进行额外的检查,并使您的程序以预期的方式失败。
相关文章:
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)
- 分段错误 - 读取初始化指针的数组
- 如何摆脱C ++中的分段错误错误?
- 使用 CTYPE 时出现分段错误
- 为什么代码给出分段错误?