假设我有以下内容:
std::string TestFragmentation()
{
std::vector<char> buffer(500);
SomeCApiFunction( &buffer[0], buffer.size() ); // Sets buffer to null-terminated string data
return &buffer[0];
}
上述在堆上分配内存的向量会成为内存碎片的原因吗?我对碎片的理解是,只有在更大、更短的分配之间有小的、长期的分配(反之亦然)时才会真正发生。
我不想过早地优化这种情况,所以我想听听对这样的代码的一般看法。我知道各种专家不建议将大缓冲区放在堆栈上(毕竟这就是堆的用途),所以当我编写这样的代码时,这通常是我首先想到的。碎片化通常是需要分析的东西。我的心态应该是什么?