示例
需求:为每个Vector元素分配对象。
不恰当的做法:在for循环中每次new CParticle。多次分配小内存,导致内存碎片的产生。
正确做法:一次分配一块大内存(new 数组),再逐个拷贝给Vector元素。
写项目中遇到这样的情况:根据不同情况new不同的子类对象。如下图所示,2个case中分别使用了不同的做法。
验证两种方法的正确性:
调试发现,case1中每个CParticle对象都已正确赋值;但是case2没有,按case2的分配,每个CParticle的vptr不正确。
备注:详情见FluidSimulation代码 CBaseParticleGenerator::generateParticle.