调试时,我发现 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++ 中错误的常见原因 - 只是要感谢你在这个错误中遇到了错误,它不仅覆盖了其他一些不相关的数据。