我的问题是,“如果我们在循环中创建对象会发生什么?”
例:
for (int i = 0; i < iterations; i++)
{
Foo* bar = new Foo(i); //here Foo(i) is a parameterized constructor
}
以及如何删除它们?
您编写的方式是,每次迭代都在免费存储区(堆)上创建一个新对象。您可能想要在循环结束时销毁该对象:
for (int i = 0; i < iterations; i++)
{
Foo* bar = new Foo(i); //here Foo(i) is a parameterized constructor
// do stuff...
delete bar;
}
或在容器中收集指针并在以后销毁它:
std::vector<Foo*> v;
for (int i = 0; i < iterations; i++)
{
Foo* bar = new Foo(i); //here Foo(i) is a parameterized constructor
v.push_back(bar);
}
// do stuff...
for(size_t i = 0; i < v.size(); ++i)
{
delete v[i];
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句