c++ - 程序不终止
问题描述
在以下代码中,当使用 GNU GCC v8.2.0 运行时,代码不会终止:
int main(void)
{
/* code */
int myArray[] = {2, 4};
int otherArray[] = {777, 888};
for(int i = 0; i<4; i++)
{
myArray[i] = 0;
cout << "myArray[" << i << "]=";
cout << myArray[i] << endl;
cout << "add: " << &myArray[i] << endl;
}
for(int i = 0; i<2; i++)
{
cout << "otherArray[" << i << "]=";
cout << otherArray[i] << endl;
cout << "add: " << &otherArray[i] << endl;
}
return 0;
}
输出:
add:0x28ff24
myarray[2]=0
add:0x28ff28
myarray[0]=0
add:0x28ff20
myarray[1]=0
add:0x28ff24
myarray[2]=0
add:0x28ff28
myarray[0]=0
add:0x28ff20
myarray[1]=0
add:0x28ff24
myarray[2]=0
add:0x28ff28
myarray[0]=0
add:0x28ff20
myarray[1]=0
add:0x28ff24
myarray[2]=0
add:0x28ff28
myarray[0]=0
add:0x28ff20
myarray[1]^C
解决方案
for(int i = 0; i<4; i++)
将“for循环”中的 4 替换为 2,如下所示:
for(int i = 0; i<2; i++)
由于您使用的是静态数组,因此最好指定固定大小,但最重要的是当您尝试通过比较正在处理的索引与数组大小来访问数组时要注意以避免这种行为。
推荐阅读
- typescript - 通过 Array 在 TypeScript 中扩展只读元组类型
- php - Laravel - 附加方法抛出异常
- c++ - 未定义的对 `MyLinkedList 的引用
::MyLinkedList(int)' - wpf - 我可以替换内容部分中的 HeaderTemplate
- java - 无法在 Firestore 数据库中归档记录
- javascript - 尝试将数据库中的整数添加到 let 但总是返回 NaN
- c# - Linq C# - 从 RAM 加入数据库导致内存不足
- swift - malloc:检测到堆损坏,空闲列表已损坏
- python - 当作为参数传递给 range() 时,如何通过 __index__ 方法告诉 PyCharm 类实例可以解释为整数?
- laravel - 编辑功能不能以 CRUD 形式工作(Laravel)