搜尋

首頁  >  問答  >  主體

c++ - 运行窗口显示大小(问题比较low)

#include<iostream>
using namespace std;

int main(){
    int array[5000000];

    for(int i = 0; i < 5000000; i++)
    {
        array[i] = i;
        cout << array[i] << " ";
    }
    return 0;

}

用的是Dev c++
要显示从1到5000000
运行窗口什么都不显示,并且弹出窗口已停止工作的提示窗口
但是如果显示1到500,是可以的
是不是有显示限制?
如果是显示限制问题,有没有哪些工具是没有限制的?

巴扎黑巴扎黑2767 天前638

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-17 12:02:41

    超過數組初始化最大長度了吧。這麼大的陣列用new動態分配

    補充:
    因為初始化的時候,記憶體分配是在堆疊上,棧的空間一般較小。所以初始化的陣列稍微大一些就會stack overflow。但是在動態分配的時候,實在堆上分配內存,堆空間一般比較大,所以可以完成題主的需要。

    綜上,程式碼改成如下的樣子,就可以正常運作:

    #include <iostream>
    using namespace std;
    
    int main(){
        // int array[5000000];
        int* array = new int[5000000];
    
        for(int i = 0; i < 5000000; i++)
        {
            array[i] = i;
            cout << array[i] << " ";
        }
        cout << "end" << endl;
        delete[] array; // 不要忘记清理动态分配内存
        return 0;
    
    }
    

    參考連結:
    http://stackoverflow.com/questions/1847789/segmentation-fault-on-large...

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 12:02:41

    C/C++ 分為局部變數和全域變數。
    全域變數在int main()主函數之外宣告。
    你把array[5000000];放在主函數上就OK

    回覆
    0
  • 取消回覆