Описание тега allocator

Компонент стандартной библиотеки C++, отвечающий за обработку запросов на выделение и освобождение памяти для контейнера.
4 ответа

Использование памяти учетной записи с помощью специального распределителя

Я использую пользовательский распределитель для учета использования памяти в нескольких контейнерах. В настоящее время я использую статическую переменную для учета использования памяти. Как можно разделить эту учетную запись на несколько контейнеров…
27 окт '09 в 09:22
2 ответа

Почему std::vector::get_allocator() возвращает по значению?

К моему удивлению, я получил ошибку при попытке использовать std::vector::get_allocator() с не копируемым распределителем. Почему std::vector::get_allocator() вернуть по значению, а не по ссылке? template<typename T> class nc_allocator { publi…
06 апр '13 в 14:05
4 ответа

Использование памяти Linux на вершине при использовании std::vector против std::list

Я заметил интересное поведение в Linux в отношении использования памяти (RES), сообщенное top, Я приложил следующую программу, которая распределяет пару миллионов объектов в куче, каждый из которых имеет буфер размером около 1 килобайта. Указатели н…
31 дек '12 в 21:52
4 ответа

Нулевой распределитель по умолчанию обнуляет int?

При использовании контейнеров STL я не уверен, был ли обнулен int, выделенный распределителем по умолчанию. Следующий код указывает "да" на вопрос: #include <map> #include <iostream> int main() { using namespace std; map<int, int> …
06 мар '12 в 13:30
1 ответ

Принимает ли std::map распределитель по ссылке, по значению или использует его исключительно как тип?

Когда std::map принимает Allocator в качестве параметра в конструкторе, он берет его по ссылке с типом, взятым из его параметра шаблона класса: explicit map(const Allocator& alloc); Сохраняет ли она эту ссылку в объекте, или она принимает копию …
12 фев '18 в 15:12
3 ответа

Используется ли подсказка выделения?

Я читал, почему нет функции перераспределения в C++ распределителях? и возможно ли создать массив в куче во время выполнения, а затем выделять больше места при необходимости?, в котором четко указано, что перераспределение динамического массива объе…
13 мар '13 в 08:32
1 ответ

Переопределение нового, но указание unordered_map не использовать его

Я пишу сборщик мусора для C/C++ как упражнение по программированию, и часть этого включает глобальное переопределение new, Однако сборщик мусора также использует unordered_map (для хранения указателей на выделенные блоки), и все будет серьезно испор…
0 ответов

Cpp Custom STD Распределитель

Первый таймер с распределителем. Я действительно борюсь с пользовательским распределителем. Я бы сказал, это очевидно, я не знаю, что я здесь делаю. Моя цель - поместить всю память для объекта в кучу процесса. Я хочу, чтобы распределение происходило…
07 апр '15 в 12:44
1 ответ

boost::unordered_map с использованием ошибки компиляции boost::interprocess::cached_node_allocator

Я пытаюсь создать boost:: unordered_map в сегменте boost:: interprocess:: managed_shared_memory. Это работает нормально, пока я не попробую перейти от использования boost:: interprocess:: allocator к boost:: interprocess:: cached_node_allocator. Каж…
4 ответа

Как использовать STL-совместимые распределители для разнородных распределений памяти

Я пытаюсь реализовать класс, который следует в памяти массивом произвольного типа: template<class T> class Buf { size_t n; int refs; explicit Buf(size_t n) : n(n) { } // other declarations are here as appropriate // Followed in memory by: // T…
04 авг '14 в 00:42
0 ответов

Распределитель пользовательских памяти с шаблоном

Я изучаю некоторые вещи об управлении памятью, поэтому я хотел реализовать свой собственный распределитель памяти.. Сначала я создал абстрактный класс с именем SMemoryAllocator только с одним производным классом с именем StackBasedAllocator.. Моя пр…
02 мар '19 в 16:40
0 ответов

Оптимальное использование памяти в realloc (расщепление?)

У меня проблемы с кодированием моей функции realloc. У меня это работает через стандартную процедуру memcpy, но я не могу оптимизировать ее. Я знаю, что есть еще два случая, которые мне нужно учитывать: расширение текущего блока вперед и проверка, д…
03 мар '13 в 02:37
4 ответа

Производительность пользовательского распределителя

Я строю класс дерева AVL, который будет иметь фиксированное максимальное количество элементов. Поэтому я подумал, что вместо того, чтобы выделять каждый элемент отдельно, я бы просто выделил весь блок сразу и использовал растровое изображение для на…
15 апр '15 в 12:55
0 ответов

Класс со многими параметрами шаблона STL - использовать один распределитель или несколько?

Я пишу класс JSON для C++11, см. http://github.com/nlohmann/json. Моя центральная структура данных - это класс, упаковывающий типы значений JSON (null, массив, объект, строка, bool, число) в объединение и предлагающий его через приятный C++ и STL-по…
24 июн '15 в 21:39
1 ответ

Рамблинг на std::allocator

У меня недавно был некоторый интерес к std::allocatorЯ думаю, что это может решить проблему, которая у меня возникла с каким-то дизайнерским решением для кода C++ Теперь я прочитал некоторую документацию об этом, посмотрел несколько видео, например,…
09 мар '17 в 21:33
2 ответа

Почему в C++ 11 нет вектора (size_type n, const Allocator& alloc)?

В C++11 std::vector имеет конструктор vector(size_type n) который будет строить по умолчанию n элементы на месте, которые можно использовать с классами по умолчанию, которые можно создавать, перемещать и не копировать. Однако, в отличие от любого др…
23 фев '12 в 22:24
1 ответ

Как выделить, так и сконструировать, зачем нужны два?

Я провел некоторое исследование, но у меня все еще есть несколько вопросов, потому что вещи не кажутся ясными, есть еще одно обсуждение, которое здесь похоже, но неясно, дан один ответ, но у него репутация ноль, и единственный комментарий говорит чт…
16 мар '18 в 19:06
2 ответа

Как пользовательский распределитель может узнать, указывает ли указатель на массив?

Я мог бы неправильно понять некоторые понятия о распределителе. Но я действительно не знаю, почему нам нужен аргумент std::size_t быть переданным allocate указать количество объектов, которые будут выделены. Используется ли аргумент для выделения об…
25 июл '16 в 13:21
1 ответ

Как использовать std::allocator вместо realloc?

Допустим, я пишу собственный вектор, используя std::allocator обернуть new а также delete, Когда количество элементов превышает емкость вектора, я бы хотел перераспределить буфер на что-то большее. Я могу легко добиться этого, позвонив realloc(), Я …
02 авг '16 в 17:04
1 ответ

Как создать C++ 11 не конструируемый по умолчанию распределитель?

Эта тема возникла в этой теме об изменении std::list::sort() для Visual Studio 2015: `std:: list<>:: sort ()` - почему внезапный переход на нисходящую стратегию? Новая версия std:: list:: sort не требует создания по умолчанию std::list, поскольку он…
18 ноя '16 в 18:18