c++如何解決大數組棧內存不夠的問題


在c++中,我們可以直接通過下面的方式創建一個數組:

const int N = 6; 
const int Nx = 100; 
const int Ny = 100; 

double phi[N][Nx][Ny];   
double phi_b[N][Nx][Ny];

但是,如果上述的Nx和Ny比較小還好說,一旦Nx和Ny很大時,就會報錯,導致編譯失敗。

 

為解決這一問題,我們可以采用下面的幾種方法來解決此問題:

1、在VC的Project   setting里的link選項卡里把棧開大一點(windows里默認是4M)   

2、聲明成全局或static的,這兩種變量不壓棧,想開多大都可以,顯然全局的變量其本身就可以擁有更多的內存   (這個方法可以立即奏效,還是不錯的)

3、使用動態分配數組內存的方法:

  int   *A   =   new   int[90000];   
  .....   
  delete   A;   

4、使用vector,如下:

  #include   <vector>   
    
  using   namespace   std;   
    
  void   main()   
  {   
        vector<int>   A(90000);   
        A[0]   =   1;   
  }

 

上面的幾種方法中 ,使用動態分配數組內存,這樣使用的時堆儲存,還是比較好的方法,但是成本高;而使用添加static的方法成本最小。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM