[問題] 迴圈內的變數宣告(定義)

看板C_and_CPP (C/C++)作者 (快樂就好)時間14年前 (2012/06/04 17:01), 編輯推噓1(107)
留言8則, 5人參與, 最新討論串1/1
變數要用到時才宣告或定義是我比較喜歡的風格。 程式碼如下: 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

06/04 17:09, , 1F
"我沒記錯的話",這和低階的配置策略有點關係,大多的策
06/04 17:09, 1F

06/04 17:10, , 2F
略是弄個pool出來,有需求時先去索取,所以大多情況是做
06/04 17:10, 2F

06/04 17:11, , 3F
一般程式不會這樣子寫= =
06/04 17:11, 3F

06/04 17:11, , 4F
"標記",不會真的一直做alloc/free,除非記憶體不夠用時..
06/04 17:11, 4F

06/04 17:20, , 5F
邏輯上像這樣 http://ideone.com/bpN4l
06/04 17:20, 5F

06/04 20:33, , 6F
先不去管佔用記憶體,將scope控制的小點,比較不怕
06/04 20:33, 6F

06/04 20:34, , 7F
不怕誤用,我是覺得這樣也滿不錯的
06/04 20:34, 7F

06/04 23:11, , 8F
真要用到才宣告就在for內宣告不就好了 _A_
06/04 23:11, 8F
文章代碼(AID): #1Fp7bZ3S (C_and_CPP)
文章代碼(AID): #1Fp7bZ3S (C_and_CPP)