Comments 7
Это вообще не то что в С++ подразумевается под аллокаторами. Это скорее какие то системные внутренние хрени, тем более с управлением через #define...
Аллокаторы в С++ это абстракция(а тут как раз конкретные реализации на уровне системы рассмотрены), абстракция эта применяется в основном в стандартных контейнерах С++, где аллокатор становится частью типа на компиляции и полностью скрыт от пользователя, как и любое ручное управление памятью в С++template<typename T, typename Allocator = std::allocator<T> >
class vector;
Вот что такое аллокатор в С++, а не этот ужОс из статьи
Хотелось бы отметить два момента: расмотренные аллокаторы всё же называются аллокаторами, более того, это довольно стандартные для мира C++ вещи (хотя местами может даже и для C). Да, это прослойка между стандартной библиотекой и системой, но нельзя же утверждать, что аналогичные методы не применимы в проектировании ваших аллокаторов, но уже более высокоуровнево?)
Задачей стояло пройтись по известным аллокаторам и разобрать их концептуально. С технической точки зрения они разобраны уже во множестве источников, потому повторяться не хотелось бы. Если у вас есть какие-то ссылки на источники про аллокаторы в вашем понимании, можете поделиться. Разберёмся и с ними.
Аллокаторы рекомендуются к использованию во всех template-объявлениях, если они представляют собой библиотеку. Никто ведь не знает заранее, когда, кем и с какой целью твой библиотечный код будет использован. По умолчанию просто ставим std::allocator с чувством заботы о ближних.
сомнительное предложение, я тут библиотеку по работе с вариадик шаблонами сделал, куда аллокатор лепить?) Ну или скажем локфри очередь, попробуй туда прилепи аллокатор...
Во-вторых, интересно, что Google утверждает, что эффективность tcmalloc растёт при росте «поточности» приложений, однако мы видим результаты в пользу других аллокаторов
Этот график из 2018 года. Гугловский tcmalloc был анонсирован только два года назад, когда в него были добавлены restartable sequences. На графике речь идёт скорее всего о tcmalloc из gperftools. Лучше померить производительность самостоятельно.
Аллокаторы внутри