c – 数组溢出(为什么这有效?)
发布时间:2020-12-16 06:46:59 所属栏目:百科 来源:网络整理
导读:好吧,所以我正在教我的女朋友一些c,她写了一个我觉得不行的程序,但确实如此.它访问数组中的另一个元素然后存在(例如,访问数组大小为5的数组[5]).这是缓冲区溢出的实例吗?我对它的想法是它在数组之后直接写入/访问内存,这是正确的吗?基本上我的问题是..为什
好吧,所以我正在教我的女朋友一些c,她写了一个我觉得不行的程序,但确实如此.它访问数组中的另一个元素然后存在(例如,访问数组大小为5的数组[5]).这是缓冲区溢出的实例吗?我对它的想法是它在数组之后直接写入/访问内存,这是正确的吗?基本上我的问题是..为什么这样做?
#include <iostream> using namespace std; int main() { int size; cout << "Please enter a size for the array." << endl; cin >> size; cout << endl; cout << "There are " << size << " elements in this array." << endl; cout << endl; cout << endl; cout << endl; int array[size]; for (int counter = 1; counter <= size; counter++) { cout << "Please enter a value for element " << counter << "." << endl; cin >> array[counter]; } cout << endl; cout << endl; for (int counter = 1; counter <= size; counter++) { cout << "Element " << counter << " is " << array[counter] << "." << endl; cout << endl; } cout << "*bing! :)" << endl; cout << endl; return 0; } 解决方法
这是未定义的行为. UB有很多种类.以下是一些:
1)它会踢你的狗. 2)它将重新格式化您的硬盘驱动器. 3)它没有问题. 在您的情况下,使用您的编译器和您的平台以及在这一天,您将看到(3).但是在其他地方尝试,你可能会得到(1),(2)或其他完全(很可能是访问冲突). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- react native Text 上无法指定borderWidth 等一系列属性
- ruby-on-rails – 在所有rails帮助程序中将协议更改为https
- ruby-on-rails – 如何创建自定义邮件头
- sqlite入门基础(一):sqlite3_open,sqlite3_exec,slite3_cl
- 在postgresql中插入…值(SELECT … FROM …)?
- vue之将echart封装为组件
- c# – System.Web.Optimization在缩小javascript时改变js文
- Ajax文件上传组件
- LeetCode 10: Regular Expression Matching
- grep及正则表达式