Вопросы по теме 'allocator'

проверка на неисправные новые
почему этот код ATL / COM проверяет успешное выделение памяти? Я ожидал, что пользовательское выделение будет видно через CoGetALloc или какой-нибудь другой API. Среда выполнения C ++, соответствующая стандартам, должна выдавать std :: bad_alloc, но...
40 просмотров
schedule 18.11.2021

есть ли скрытые опасности моего пользовательского распределителя памяти
Недавно я писал настраиваемый распределитель памяти , См. Подробную информацию в этой статье настраиваемое выделение памяти .. благодаря ответу Дэвида Хаммена , теперь я могу правильно освобождать память полиморфных объектов. тогда, кажется, я...
178 просмотров

Как пользовательский распределитель может узнать, указывает ли указатель на массив?
Я мог что-то неправильно понять в некоторых концепциях распределителя. Но я действительно не знаю, зачем нам нужен аргумент std::size_t , который нужно передать в allocate , чтобы указать количество выделяемых объектов. Используется ли аргумент...
95 просмотров
schedule 14.10.2021

Пользовательский освободитель с std :: vector не вызывается
Я ожидаю, что этот код напечатает «Hello world» - «Hello», когда память освобождена, и «world» в main . Однако «Hello» никогда не печатается, а это означает, что мой деаллокатор не вызывается. Как правильно это реализовать? #include...
500 просмотров
schedule 21.11.2021

Должен ли allocator :: get_deleter () быть константным?
Я пытаюсь предоставить get_deleter() для моего шаблона класса распределителя без блокировок (код: здесь ). Удалитель - это что-то вроде template <typename T> struct deleter { allocator<T>& alloc; void operator()(T* p) const...
48 просмотров
schedule 25.09.2021

Ошибка пользовательского распределителя с контейнером STL
Я создал специальный распределитель, который выделяет память при построении и освобождает ее при уничтожении. (чтобы обеспечить быстрое выделение / освобождение). Когда я использую его с контейнером STL, все работает нормально! Ожидается, когда я...
387 просмотров
schedule 19.11.2021

Почему передача initializer_list в allocotr :: construct для построения вектора не работает?
У меня проблема: я снова читаю C ++ primer 5 edition. Сейчас я на std::allocator , все в порядке, но я не знаю, почему мой код здесь не копируется: #include <iostream> #include <initializer_list> #include <memory> #include...
32 просмотров
schedule 22.11.2021

Могу ли я использовать специальный распределитель для std :: array для безопасных криптографических ключей?
Я знаю, что std::array полностью выделен в стеке, но этот вопрос вызван соображениями безопасности, требующими двух вещей: Данные в std::array будут обнулены или рандомизированы при уничтожении. Данные в std::array будут заблокированы ,...
293 просмотров
schedule 12.10.2021

Почему компиляторы позволяют распределителю значения другого типа, чем используемый контейнер
Кажется, что требования к контейнеру C++ STL заключаются в том, что value_type предоставленного типа распределителя должен быть таким же, как value_type контейнера STL. Требуется: allocator_- type::value_type совпадает с X::value_type. Однако...
876 просмотров
schedule 05.03.2022

Почему мои глобальные переопределения new () игнорируются?
У меня есть файл динамической библиотеки (libdatamodel.so), который статически связан с моими переопределениями new / delete. Есть несколько распределений, которые не обрабатываются моими переопределениями, и я не уверен, почему. Я использовал...
91 просмотров
schedule 05.03.2022

Как реализуется назначение контейнеров с учетом распределителя?
Например, из std :: deque :: operator = в C ++ Справочник: (1) Копировать назначение (const std :: deque & other) Заменяет содержимое копией содержимого другого. Если std :: allocator_traits ::ropate_on_container_copy_assignment ()...
1157 просмотров

std::uninitialized_move с определенным распределителем
Я пишу собственный класс шаблона контейнера, который, как и многие (если не все) контейнеры в stl, может использовать указанный тип распределителя. Чтобы реализовать функцию вставки диапазона, мне нужно переместить некоторые элементы в контейнере на...
59 просмотров
schedule 14.03.2022

Линейный распределитель C++ и границы контейнера
Я реализую собственный графический интерфейс/игровой движок и решил внедрить гетерогенную систему управления ресурсами. Как следствие этого, пользовательские распределители очень желательны в ряде ситуаций. Один из распределителей, который я...
96 просмотров

Как правильно использовать распределители для полиморфных типов?
Я добавляю настраиваемые распределители памяти в систему и пытаюсь сделать это правильно с помощью концепции Allocator , но столкнулся с некоторой неопределенностью, когда достиг точки, когда тип выделенного компонента был стерт. class...
120 просмотров
schedule 16.04.2022

Есть ли распределитель, который использует alloca и в остальном совместим с C ++ STL?
У меня два вопроса: 1) Можно ли реализовать распределитель, который использует alloca для выделения памяти в стеке и в остальном совместим с C ++ STL? Если там есть код, вы можете порадовать меня, просто указав мне на URL. :-) Если кода нет,...
1796 просмотров
schedule 28.04.2022

Как выделить память на основе количества элементов в списке STL?
Существует возможность предоставить собственный распределитель для контейнеров STL. Однако я не могу найти реализацию, которая может увеличить размер блока пула памяти, как только в пуле закончится место. Как распределитель STL может считывать...
351 просмотров
schedule 24.04.2022

Гарантируется ли, что std::vector каждая выделенная память с функцией выделения также будет освобождена сразу с помощью одного вызова освобождения?
Я пишу собственный распределитель для std::vector и хочу знать, как std::vector использует указанный распределитель? Пусть он выделяет память под 5 объектов, а потом освобождает память частично, например сначала 2 элемента, потом 3 элемента... (не...
63 просмотров
schedule 01.06.2022

boost::interprocess Контейнеры контейнеров НЕ в общей памяти
У меня есть пример демонстрационной программы с boost::interprocess Контейнеры контейнеров типа. Но мне нравится использовать класс также как обычный класс в моей памяти процесса. Может ли кто-нибудь помочь мне написать конструктор, который не...
811 просмотров
schedule 03.06.2022

Стандартные библиотечные средства, которые выделяют, но не используют распределитель
В большинстве мест, где стандартная библиотека C++ выделяет память, пользователь может настроить это, предоставив класс, соответствующий Allocator требования . Например, почти все контейнеры принимают аргумент шаблона распределителя, а...
460 просмотров

Контейнер STL: параметр Allocator конструктора и распределители области действия
Существует параметр шаблона для контейнеров STL для выбора пользовательского распределителя. Это заняло некоторое время, но я думаю, что понял, как это работает. Как-то это не очень приятно, потому что данный тип распределителя не используется...
3556 просмотров
schedule 13.06.2022