Size: a a a

2020 July 30

D

Danya in supapro.cxx
Unknown T.
То есть вот был у строки указатель на массив символов, если ей нужно больше места, то сначала аллоцируется новый кусок, данные переписываются туда, указатель переставляется на новый кусок, а старый деаллоцируется?
Да
источник

UT

Unknown T. in supapro.cxx
Danya
Я не думаю что куча состоит из таких блоков, откуда куча должна знать сколько пользователь заиспользовал памяти из выделенного куска?
Аллокатор же сам задает размер куска, который надо выделить
источник

D

Danya in supapro.cxx
Unknown T.
Аллокатор же сам задает размер куска, который надо выделить
А стоп у тебя used — это bool
Извиняюсь
источник

AS

Anatoly Shirokov in supapro.cxx
Unknown T.
То есть вот был у строки указатель на массив символов, если ей нужно больше места, то сначала аллоцируется новый кусок, данные переписываются туда, указатель переставляется на новый кусок, а старый деаллоцируется?
да
источник

UT

Unknown T. in supapro.cxx
Это я просто свой вектор продолжаю писать. То есть когда мне надо увеличить capacity вдвое, я просто делаю allocate(2 * capacity), переписываю данные, указатель и делаю deallocate старого указателя, так?
источник

AS

Anatoly Shirokov in supapro.cxx
Unknown T.
Это я просто свой вектор продолжаю писать. То есть когда мне надо увеличить capacity вдвое, я просто делаю allocate(2 * capacity), переписываю данные, указатель и делаю deallocate старого указателя, так?
да
источник

UT

Unknown T. in supapro.cxx
Спасибо, буду пробовать! Надо будет потом свой аллокатор попробовать написать
источник

VS

Vladimir Suisei in supapro.cxx
А вектор типа не реаллочит?
источник

D

Danya in supapro.cxx
Vladimir Suisei
А вектор типа не реаллочит?
Не обязан и мне кажется имплементации этого не делают
источник

AS

Anatoly Shirokov in supapro.cxx
структуры данных, которым не требуется гарантия непрерывного хранения не реаллочат, вектор, стринг - перевыделяют
источник

D

Danya in supapro.cxx
Unknown T.
Спасибо, буду пробовать! Надо будет потом свой аллокатор попробовать написать
YouTube
Руслан Арутюнян — Modern C++ allocators
Ближайшая конференция — С++ Russia 2020 Piter
11-14 ноября, Online
Подробности и билеты: https://cppconf-piter.ru/

. Доклад направлен на то, чтобы рассказать про аллокаторы, как про базовые понятия, так и про продвинутые вещи. Мы посмотрим на историю аллокаторов, разберем ошибки в их дизайне, посмотрим на современные аллокаторы, предоставляемые стандартной библиотекой, увидим, какие проблемы они решают. Более подробно остановимся на polymorphic_allocator и memory_resource, так как это нововведения в С++17, которые продолжают развиваться в C++20. Также поговорим про поддержку С++ аллокаторов с точки зрения разработчиков библиотек, что поможет правильно писать код.

Цель доклада — познакомить людей с аллокаторами в целом, рассказать про современные тенденции, рассказать, какие виды аллокаторов в каких случаях использовать, объяснить, как работает модель пропагации аллокаторов для вложенных контейнеров, рассказать, что может ждать разработчиков библиотек при поддержке аллокаторов.
источник

VS

Vladimir Suisei in supapro.cxx
Danya
Не обязан и мне кажется имплементации этого не делают
Почему нет, реаллочить быстрее же чем всегда копировать
источник

UT

Unknown T. in supapro.cxx
реаллочит это типа довыделяет память к концу?
источник

d

dekabr in supapro.cxx
Есть два шаблона функции с параметром-типом
Во втором тип ограничен концептом

Есть гарантии что при удовлетворении концепту выбирается второй?
источник

VS

Vladimir Suisei in supapro.cxx
Unknown T.
реаллочит это типа довыделяет память к концу?
Если место есть, да
источник

AS

Anatoly Shirokov in supapro.cxx
Unknown T.
реаллочит это типа довыделяет память к концу?
нет, полность выделяет новый кусок, если требуемый размер больше capacity
источник

D

Danya in supapro.cxx
dekabr
Есть два шаблона функции с параметром-типом
Во втором тип ограничен концептом

Есть гарантии что при удовлетворении концепту выбирается второй?
Лучше маленький пример покажи
В целом да
источник

VS

Vladimir Suisei in supapro.cxx
Anatoly Shirokov
нет, полность выделяет новый кусок, если требуемый размер больше capacity
Я имел ввиду как realloc()
источник

UT

Unknown T. in supapro.cxx
Anatoly Shirokov
нет, полность выделяет новый кусок, если требуемый размер больше capacity
больше capacity же?
источник

UT

Unknown T. in supapro.cxx
Vladimir Suisei
Я имел ввиду как realloc()
ну вот у std::allocator, на котором вроде бы весь stl, только allocate/deallocate. Но в allocate есть hint -- указатель, максимально близко к которому мы хотим выделить новую память. Не знаю, может ли он тут пригодиться
источник