0
我的想法是在每次迭代後襬脫我在函數中使用的所有指針。在每次處理後刪除所有使用的指針
我的情況:我正在使用計算數百萬次某些值的循環。但是在每次迭代(i ++)之後,我想要釋放它們,而不是在它們要做同樣的迭代時用先前的迭代覆蓋它們,以免產生一些問題。
有沒有一種方法來釋放我在幾行中使用的所有指針?
我的想法是在每次迭代後襬脫我在函數中使用的所有指針。在每次處理後刪除所有使用的指針
我的情況:我正在使用計算數百萬次某些值的循環。但是在每次迭代(i ++)之後,我想要釋放它們,而不是在它們要做同樣的迭代時用先前的迭代覆蓋它們,以免產生一些問題。
有沒有一種方法來釋放我在幾行中使用的所有指針?
使用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
。
如果使用['std :: unique_ptr'](http://en.cppreference.com/w/cpp/memory/unique_ptr),它們將自動被刪除。但是你是否真的想在許多迭代中進行數百萬次的分配? – BoBTFish
U可以使用指針數組[如果它們屬於同一類型],並使用delete []指定數組,請刪除數組[ –
@SuvP謝謝,但問題是我所有的指針都來自不同的類型:const char,int,IplImage,double ...很多! – user2187476