for( int i = 0; i < lines; i++ ) {
std::unique_ptr<BYTE[]> pLine( new BYTE[lineSize] );
//Do stuff
}
现在, pLine 在循环内声明,因为它只在循环体中使用。但是,仅在循环外分配一次不会减少执行的分配量(避免内存碎片)吗?
std::unique_ptr<BYTE[]> pLine( new BYTE[lineSize] );
for( int i = 0; i < lines; i++ ) {
//Do stuff
}
如果编译器知道 lineSize 在整个迭代过程中保持不变,我可以相信编译器能够轻松优化第一个版本;但它确实会在整个函数调用中发生变化,所以我不能让它成为一个常数。
我还认为在检测到性能问题之前应该避免像这样的微优化,所以我想我会坚持使用第一个版本。你们有什么感想?