在循环的每次迭代中分配大块堆内存是否会带来明显的性能损失?当然,我在每次迭代结束时释放它。
另一种方法是在进入循环之前分配一次,在所有迭代中重复使用它,并最终在退出循环后释放它。请参阅下面的代码。
// allocation inside loop
for(int i = 0; i < iter_count; i++) {
float *array = new float[size]();
do_something(array);
delete []array;
}
// allocation outside loop
float *array = new float[size]();
for(int i = 0; i < iter_count; i++) {
do_something(array);
}
delete []array;
我永远不会在循环内这样做。分配内存不是一个免费的事件,分配一次就可以了确实比一遍又一遍地做更喜欢。
您也可以只分配不带括号的数组,应该没问题:
float *array = new float[size];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)