Предположим, у меня есть следующее:
std::string TestFragmentation()
{
std::vector<char> buffer(500);
SomeCApiFunction( &buffer[0], buffer.size() ); // Sets buffer to null-terminated string data
return &buffer[0];
}
Будет ли приведенный выше вектор, который выделяет память в куче, причиной фрагментации памяти? Мое понимание фрагментации таково, что это действительно происходит только в том случае, если у вас есть небольшие долгоживущие выделения между более крупными, более короткоживущими выделениями (или наоборот).
Я не хочу преждевременно оптимизировать эту ситуацию, поэтому я хотел бы услышать общее мнение о таком коде. Я знаю, что различные эксперты не рекомендуют размещать в стеке большие буферы (в конце концов, для этого и нужна куча), так что обычно я думаю об этом в первую очередь, когда пишу подобный код. Фрагментация обычно требует анализа. Каким должно быть мое душевное состояние здесь?
boost::array
, потому что для такой простой задачи я не хотел, чтобы работа через диспетчер памяти влияла на производительность. 17.04.2012