Динамический массив: двойной размер realloc vs Big Reserve + CommitC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Динамический массив: двойной размер realloc vs Big Reserve + Commit

Сообщение Anonymous »

Существует по сути два подхода к динамическим массивам. Одним из них является Malloc -inment prick и realloc -ing с вдвое большей емкостью по мере роста массива. В какой -то момент realloc начнет выделять новый массив и копировать содержимое старого и освободить старое. Это, безусловно, самый распространенный подход, но по мере того, как массив становится очень большим, перераспределение и копия могут ввести значительную задержку.
С другой стороны, можно инициализировать массив, оставив огромное количество виртуального адресного пространства (с виртуальным , MMAP , и т. Д. В зависимости от платформы) даже на все размеры. Затем по мере роста размера массива можно просто совершить память на лету. Это не только избегает копирования, но и любые указатели на массив также не будут недействительными. Однако я не видел, чтобы это использовалось в дикой природе ... < /p>
Итак, мой вопрос в том, почему? Почему первый подход почти всегда используется, а второй - так редко? У меня не хватает значительных недостатков второго подхода? Или я даже недооцениваю частоту использования второго подхода в дикой природе?

Подробнее здесь: https://stackoverflow.com/questions/797 ... rve-commit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Динамический массив: Double Size Realloc vs Big Reserve + Commit [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Как работает realloc, в качестве аргумента передан размер 0
    Anonymous » » в форуме Linux
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как работает realloc, в качестве аргумента передан размер 0
    Anonymous » » в форуме Linux
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • VkCreateInstance — realloc() с размером 0 — ошибка valgrind
    Гость » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Гость
  • Xiar rc splines.a splines.o realloc(): неверный указатель
    Anonymous » » в форуме Linux
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»