首页 > 解决方案 > 程序不终止

问题描述

在以下代码中,当使用 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

标签: c++g++

解决方案


for(int i = 0; i<4; i++)

将“for循环”中的 4 替换为 2,如下所示:

for(int i = 0; i<2; i++)

由于您使用的是静态数组,因此最好指定固定大小,但最重要的是当您尝试通过比较正在处理的索引与数组大小来访问数组时要注意以避免这种行为。


推荐阅读