当我尝试在循环中创建和删除一个类的实例时,出现了问题。迭代的执行时间非常不同。据我所知,这与从内存中删除对象有关。然而,我不理解这个操作的行为。为什么时间不同?我该怎么修复它?当我在单独的线程中删除对象时,时间是稳定的。
class NODE{
public:
NODE(){}
NODE* add(NODE* node)
{
children.push_back(node);
return node;
}
virtual ~NODE()
{
for(vector<NODE*>::iterator it = children.begin(); it != children.end(); ++it)
{
delete *it;
}
}
vector<NODE*> children;
};
NODE* create()
{
NODE* node( new NODE() );
for (int i=0; i<200;i++) {
NODE* subnode = node->add( new NODE());
for (int k=0; k<20; k++) subnode->add( new NODE());
}
return node;
}
int main()
{
NODE* root;
unsigned t;
for (int i=0; i<30; i++){
t = clock();
cout << "Create... ";
root = create();
delete root;
cout<< clock()-t << endl;
}
}
新增内容: 我很困惑。当我在VS之外运行程序时,它可以正常工作...