Маги c на самом деле не существует, и результирующий буфер растет так же, как List<T>
(точный код зависит от используемой вами среды и какой версии), однако это все еще одни и те же.
Размер буфера будет начинаться с размера 4
и будет увеличиваться в два раза каждый раз, когда ему потребуется емкость. Например, 8, 16, 32, 64, ...
Каждый раз, когда он увеличивается, он использует быструю копию mem (стиль) для передачи данных.
Окончательный результат выделит и копию для нужного размера.
Да, есть выделений , и чем больше перечисленный результат, тем больше выделений будет работать, хотя даже в худшем случае они будут минимальный.
Примечание : Если вы хотите уменьшить выделения в вашем коде, то лучше держаться подальше от растущих буферов и магических зверей, которые их вызывают