簡體   English   中英

釋放數組上的內存

[英]c++ - How to free up memory on an array

我正在處理以下令人費解的問題

首先,我必須打開一些文件並執行一些操作。 為此,我必須定義一些數組。 我想做的是在轉到下一個文件之前刪除數組。 我知道我可以動態定義數組,但是

  1. 我不知道先驗的大小
  2. 建議我不要搞亂動態分配

那么,有沒有辦法“擦除”非動態定義的數組?

下面是一個示例代碼

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

關於如何實現這樣的想法?

您根本不需要做任何事情。

向量leftrightamplitude都在循環體內局部創建。 因此,在循環體的開頭重新創建一個新元素(使用零個元素,因為這是它們的初始化方式),並在循環末尾銷毀-這會在每次循環迭代時釋放它們使用的內存... 。

您可以通過在聲明向量后立即(即在調用Function_that_fill_arrays_PUSHBACK() )打印向量的大小來進行檢查。 您會發現大小每次為零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM