作者eagle32 (快樂就好)
看板C_and_CPP
標題[問題] 迴圈內的變數宣告(定義)
時間Mon Jun 4 17:01:21 2012
變數要用到時才宣告或定義是我比較喜歡的風格。
程式碼如下:
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
→ diabloevagto:先不去管佔用記憶體,將scope控制的小點,比較不怕 06/04 20:33
→ diabloevagto:不怕誤用,我是覺得這樣也滿不錯的 06/04 20:34
→ kikiqqp:真要用到才宣告就在for內宣告不就好了 _A_ 06/04 23:11