[英]c++ - How to free up memory on an array
我正在處理以下令人費解的問題
首先,我必須打開一些文件並執行一些操作。 為此,我必須定義一些數組。 我想做的是在轉到下一個文件之前刪除數組。 我知道我可以動態定義數組,但是
那么,有沒有辦法“擦除”非動態定義的數組?
下面是一個示例代碼
void Analyze(unsigned int first_run, unsigned int last_run, unsigned int last_segment){
TFile *fin = new TFile(TString::Format("HPGe_%d_%d_%d.root", first_run, last_run, last_segment));
for (int segm = 2; segm<=3; segm++){//loop for different files
std::vector<double> left;
std::vector<double> right;
std::vector<int> amplitude;
Function_that_fill_arrays_PUSHBACK(left, right, amplitude);
for (int i=0; i<left.size(); i++){
if (right[i]<=0.01){
cout << "Left side : " << left[i] << ", Right side : " << right[i] << ", Amplitude : " << amplitude[i] << endl;
}
}
DELETE ARRAYS HERE
}// end of loop over files
}//end of function
關於如何實現這樣的想法?
您根本不需要做任何事情。
向量left
, right
和amplitude
都在循環體內局部創建。 因此,在循環體的開頭重新創建一個新元素(使用零個元素,因為這是它們的初始化方式),並在循環末尾銷毀-這會在每次循環迭代時釋放它們使用的內存... 。
您可以通過在聲明向量后立即(即在調用Function_that_fill_arrays_PUSHBACK()
)打印向量的大小來進行檢查。 您會發現大小每次為零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.