为什么数组单元格可以超过数组长度
Why can array cells exceed array length
调试时,我发现 int 数组为 0 的错误。在一个测试文档中,我弄乱了单元格输入多于其长度的数组。
int array[0];
for(int i = 0; i < 10; i++)
array[i] = i;
for(int i = 0; i < 10; i++)
cout << array[i];
在我编译并运行程序后,我得到了
0123456789
然后我收到消息"测试.exe已停止工作"。我期望这两个,但我感到困惑的是为什么编译器允许我创建一个 0 数组,以及为什么程序直到程序结束时才会崩溃。我预计一旦超过数组长度,程序就会崩溃。
有人可以解释一下吗?
编译器
至少应该警告你一个零大小的数组 - 如果没有......考虑更改编译器。
请记住,数组只是一点内存,就像其他任何数组一样。在您的示例中,数组可能存储在堆栈中,因此在您的函数退出之前,注销数组的末尾可能不会引起太大问题。此时,您可能会发现您在退货地址上写了一些文本,并且会出现异常。注销数组的末尾是 C/C++ 中错误的常见原因 - 只是要感谢你在这个错误中遇到了错误,它不仅覆盖了其他一些不相关的数据。
相关文章:
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- 当我使用需要计算数组单元格地址的模板时,奇怪的C++行为
- 2D 数组,某些单元格保存特定数据
- C++ 2D 数组在调用附近的小区时循环到行中的第一个单元
- 索引和访问 mex 函数中单元数组和矩阵的元素
- 瓦尔格林德内存泄漏与动态数组C++
- 是否有任何数据类型或方法可以计算当前单元格中先前数组单元格的总和
- 在带有单元格数组的C 特征矩阵和MATLAB MXARRAY之间传递数据
- 将两个值添加到数组的单元格中
- 为什么数组单元格可以超过数组长度
- 如何知道数组中两点之间的单元格数
- 是否可以将两个数字放在数组的一个单元格中
- 为C++中的每个单元格创建一个只有 2 位的数组
- 分配一个由999999999个单元格组成的数组|C++
- 数组单元格显示错误
- 我不希望我的 Excel 加载项返回数组(相反,我需要 UDF 来更改其他单元格)
- 从数组中删除单元格给我运行时错误
- 通过翻转单元格组来用零填充二维数组
- 创建一个1D数组,每个单元格有两个变量
- 如何按特定单元格对二维数组进行快速排序?