【发布时间】:2016-12-11 22:21:12
【问题描述】:
很多时候我们需要在循环中初始化某些类的对象以进行操作:
假设我有一个类/结构:
class employee
{
//member variables
//member methods - getter/setters,etc
}
现在假设我想对数组中的每个员工进行操作。
方法一:
for (loop on array of 10 employees)
{
employee emp(loop element); //using constructor of employee for initialization
//operate on the current loop element using emp
}
这样,根据我的理解,将创建 10 个 emp 对象,直到循环结束。现在由于这不包括动态内存分配,一旦控制退出循环,所有 10 个对象将被删除(和内存占用10 个将被释放)或仅删除最后一个对象(& 9 个对象占用的内存不会被释放)。
方法二:
for (loop on array of 10 employees)
{
employee *emp=new employee(loop element); //using constructor of employee for initialization
//operate on the current loop element using emp
delete emp;
emp = nullptr;
}
这里它在程序员的控制中,所以我们可以在每次循环迭代中自己释放内存。虽然这也会导致频繁分配和释放堆内存,并且如果循环用于大量员工,可能会导致性能下降。
请帮助我解决方法 1 中提到的查询,并请建议上述方法中哪一种好,以及是否有更好的方法?
【问题讨论】:
标签: c++ performance