Pull to refresh

Comments 7

Это вообще не то что в С++ подразумевается под аллокаторами. Это скорее какие то системные внутренние хрени, тем более с управлением через #define...
Аллокаторы в С++ это абстракция(а тут как раз конкретные реализации на уровне системы рассмотрены), абстракция эта применяется в основном в стандартных контейнерах С++, где аллокатор становится частью типа на компиляции и полностью скрыт от пользователя, как и любое ручное управление памятью в С++
template<typename T, typename Allocator = std::allocator<T> >
class vector;

Вот что такое аллокатор в С++, а не этот ужОс из статьи

Хотелось бы отметить два момента: расмотренные аллокаторы всё же называются аллокаторами, более того, это довольно стандартные для мира C++ вещи (хотя местами может даже и для C). Да, это прослойка между стандартной библиотекой и системой, но нельзя же утверждать, что аналогичные методы не применимы в проектировании ваших аллокаторов, но уже более высокоуровнево?)

Задачей стояло пройтись по известным аллокаторам и разобрать их концептуально. С технической точки зрения они разобраны уже во множестве источников, потому повторяться не хотелось бы. Если у вас есть какие-то ссылки на источники про аллокаторы в вашем понимании, можете поделиться. Разберёмся и с ними.

Аллокаторы рекомендуются к использованию во всех template-объявлениях, если они представляют собой библиотеку. Никто ведь не знает заранее, когда, кем и с какой целью твой библиотечный код будет использован. По умолчанию просто ставим std::allocator с чувством заботы о ближних.

сомнительное предложение, я тут библиотеку по работе с вариадик шаблонами сделал, куда аллокатор лепить?) Ну или скажем локфри очередь, попробуй туда прилепи аллокатор...

Встречный вопрос: "Как использовать вашу библиотеку с custom allocators?"

Обычно аллокатор вставляют в заголовок. Возможно, ваши классы совсем не работают с памятью, ничего не создают и не удалают, тогда, действительно, можно обойтись без него.

Во-вторых, интересно, что Google утверждает, что эффективность tcmalloc растёт при росте «поточности» приложений, однако мы видим результаты в пользу других аллокаторов

Этот график из 2018 года. Гугловский tcmalloc был анонсирован только два года назад, когда в него были добавлены restartable sequences. На графике речь идёт скорее всего о tcmalloc из gperftools. Лучше померить производительность самостоятельно.

Берега попутал. Спасибо за замечание.

Sign up to leave a comment.

Articles