我的想法是在每次迭代后摆脱我在函数中使用的所有指针。
我的情况:我正在使用一个循环来计算数百万次的某些值。但是在每次迭代(i ++)之后,我想释放它们,而不是在它们即将进行相同的迭代时用之前的那些覆盖它们,以免出现一些问题。
有没有办法释放我在几行中使用的所有指针?
答案 0 :(得分: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
- 对象会自动被销毁,因为它们是在堆栈上分配的。他们的析构函数在他们管理的对象上调用delete
。