2013-04-12 29 views
0

我的想法是在每次迭代後襬脫我在函數中使用的所有指針。在每次處理後刪除所有使用的指針

我的情況:我正在使用計算數百萬次某些值的循環。但是在每次迭代(i ++)之後,我想要釋放它們,而不是在它們要做同樣的迭代時用先前的迭代覆蓋它們,以免產生一些問題。

有沒有一種方法來釋放我在幾行中使用的所有指針?

+0

如果使用['std :: unique_ptr'](http://en.cppreference.com/w/cpp/memory/unique_ptr),它們將自動被刪除。但是你是否真的想在許多迭代中進行數百萬次的分配? – BoBTFish

+0

U可以使用指針數組[如果它們屬於同一類型],並使用delete []指定數組,請刪除數組[ –

+0

@SuvP謝謝,但問題是我所有的指針都來自不同的類型:const char,int,IplImage,double ...很多! – user2187476

回答

1

使用smart pointers分配您的對象,它們會自動發佈。

for (int i(0); i < 10000000; ++i) 
{ 
    std::unique_ptr<Foo> pFoo(new Foo()); 
    std::unique_ptr<Bar> pBar(new Bar(pFoo.get())); 

    pBar->DoSomething(); 
} 

當離開環路std::unique_ptr -object的越來越自動銷燬,因爲它們是在棧上分配的範圍。他們的析構函數在他們管理的對象上調用delete