看板 C_and_CPP 關於我們 聯絡資訊
變數要用到時才宣告或定義是我比較喜歡的風格。 程式碼如下: for(int t=0; t <= total_timestep; t+=interval) { int temp_window = window; int index = t; vector<double> avg_intensity(size_qx*size_qy*size_qz, 0.0); vector<double> avg_intensity2D(size_qx*size_qz, 0.0); do { vector<Vector> r; vector<double> intensity(size_qx*size_qy*size_qz, 0.0); vector<double> i_yz, i_xz, i_xy; GetScatSource(data_dir, index, r); ScatIntensity(size_qx, size_qy, size_qz, q, r, intensity); }while(temp_window > 0) } 而我對迴圈內的變數的概念是 當迴圈結束時,這些區域變數(不包含指標變數)所佔用的記憶體就會被釋放。 根據以上的觀念,以下的程式是不是會佔用太多記憶體空間啊,因為直到迴圈結束 前 vector<double> avg_intensity; vector<double> avg_intensity2D;...... 都一直在要新的空間?還是每跑一次迴圈這些容器佔用記憶體就會被釋放 然後再給新的空間? 感謝回覆! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.103.227
EdisonX:"我沒記錯的話",這和低階的配置策略有點關係,大多的策 06/04 17:09
EdisonX:略是弄個pool出來,有需求時先去索取,所以大多情況是做 06/04 17:10
stupid0319:一般程式不會這樣子寫= = 06/04 17:11
EdisonX:"標記",不會真的一直做alloc/free,除非記憶體不夠用時.. 06/04 17:11
shadow0326:邏輯上像這樣 http://ideone.com/bpN4l 06/04 17:20
diabloevagto:先不去管佔用記憶體,將scope控制的小點,比較不怕 06/04 20:33
diabloevagto:不怕誤用,我是覺得這樣也滿不錯的 06/04 20:34
kikiqqp:真要用到才宣告就在for內宣告不就好了 _A_ 06/04 23:11