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

Убедительные примеры пользовательских распределителей C++?
Каковы действительно веские причины отказаться от std::allocator в пользу индивидуального решения? Сталкивались ли вы с ситуациями, когда это было абсолютно необходимо для корректности, производительности, масштабируемости и т. д.? Есть...
102957 просмотров

Утечка памяти при использовании OpenMP
В приведенном ниже тестовом примере не хватает памяти на 32-битных машинах (выбрасывается std::bad_alloc) в цикле, следующем за сообщением «post MT section» при использовании OpenMP, однако, если #pragmas для OpenMP закомментированы, код выполняется...
5852 просмотров

Синтаксис параметра шаблона шаблона по умолчанию
Я написал спископодобный шаблонный класс sll (Single Linked List). Теперь я пытаюсь подключить к нему распределитель. У меня есть распределитель по умолчанию, распределитель и распределитель на основе пула, pool_allocator. Они разработаны после...
877 просмотров
schedule 31.12.2022

нужно написать распределитель разделяемой памяти для С++ std::vector
Помогите, пожалуйста, написать распределитель C++ для класса std::vector‹ nIcon*>. Все примеры, которые я нахожу, показывают, какие методы мне нужно перезаписать, а не примеры кода. Мне нужно реализовать распределитель с использованием общей...
1223 просмотров
schedule 17.07.2022

Требования к типам указателей распределителя стандартной библиотеки
Я пытаюсь написать класс разреженной матрицы quadtree. Короче говоря, quadtree_matrix<T> — это либо нулевая матрица, либо четверка (ne, nw, se, sw) из quadtree_matrix<T> . В конечном итоге я хотел бы протестировать различные схемы...
400 просмотров

Распределитель по умолчанию С++ - что должно произойти, если размер не равен размеру, переданному при вызове выделения?
20.6.9: void deallocate(pointer p, size_type n); Требуется: p должно быть значением указателя, полученным из allocate(). n должно равняться значению, переданному в качестве первого аргумента для вызова allocate, который вернул p....
142 просмотров
schedule 19.09.2022

Существует ли распределитель STL, который не будет неявно освобождать память?
Прогнозируется, что использование памяти в моих контейнерах STL будет изменчивым, то есть оно будет часто уменьшаться и увеличиваться. Я думаю учесть это, указав распределитель для объявлений типа контейнера STL. Я понимаю, что распределители пула...
490 просмотров
schedule 10.07.2023

Пользовательский аллокатор для быстрого распределения std::wstring
Существует ли какой-либо распределитель с открытым исходным кодом (возможно, в Boost), который можно использовать с std::wstring , реализующим шаблон быстрого распределения, подобный показанному в этот пост в блоге ? Boost.Pool не подходит для...
821 просмотров
schedule 09.01.2024

Использование tcmalloc/jemalloc с менеджером пользовательского пула памяти
Я хотел бы использовать высокопроизводительный распределитель общего назначения, такой как jemalloc / tcmalloc , с пулом памяти. Есть ли руководство для этого? Я не хочу использовать jemalloc / tcmalloc в качестве замены malloc . У меня есть...
2537 просмотров
schedule 09.05.2022

Почему распределителю нужен интерфейс построения и уничтожения?
Распределитель по умолчанию в stl имеет интерфейсы для создания и уничтожения элементов. void construct(pointer __p, const _Tp& __val) void destroy(pointer __p) Но stl также предоставляет два типа функций для выполнения одних и тех же...
250 просмотров
schedule 08.02.2024

Можно ли позже создать элементы std::tuple с помощью распределителя?
Насколько я понял, одной из причин использования распределителей C++ для моего собственного контейнера было бы то, что я могу разделить выделение и построение. Теперь мне интересно, возможно ли это для std::tuples следующим образом: каждый раз,...
829 просмотров
schedule 14.04.2022

Как forward_list, set, list и т.д. вызывают std::allocator?
Я заметил, что аллокатор может выделять только объекты типа T и резервировать блоки памяти размером n * sizeof(T) . Однако узлы связанного списка внутри типа std::list<T> не обязательно являются объектами типа T и не обязательно имеют...
241 просмотров
schedule 15.04.2024

получение памяти от std::vector
Я использую внешнюю библиотеку, которая работает с большими объемами данных. Данные передаются необработанным указателем плюс длина. Библиотека не претендует на владение указателем, но вызывает предоставленную функцию обратного вызова (с теми же...
3901 просмотров
schedule 11.12.2022

Всегда ли полезно устанавливать количество сегментов в конструкторе, если мы знаем количество элементов заранее, а не резервировать их позже?
Я вижу, что создание пустой карты unordered_map устанавливает количество корзин по умолчанию (в моем случае это 11). После чего, если я вызову unordered_map.reserve(n) , где n довольно велико, он немедленно перефразируется. Так что это хорошая идея...
72 просмотров

Почему объект, выделенный в межпроцессной разделяемой памяти boost, занимает больше памяти, чем требуется?
Для приведенной ниже программы, использующей межпроцессную разделяемую память Boost, #include <iostream> #include <boost/interprocess/mapped_region.hpp> #include <boost/interprocess/managed_shared_memory.hpp> #include...
1409 просмотров

Как использовать std :: allocator вместо realloc?
Допустим, я пишу собственный вектор, используя std::allocator для обтекания new и delete . Когда количество элементов превышает емкость вектора, я хотел бы перераспределить буфер на что-то большее. Я легко могу этого добиться, позвонив...
394 просмотров

Использование распределителя в C++ (дерево STL)
Недавно я пытался понять, как работают распределители C++, и искал реализацию красно-черного дерева, которое библиотека STL использует для таких вещей, как std::set или std::map , но есть некоторые вещи, которые я не могу понять. получить мою...
1057 просмотров
schedule 30.10.2023

самостоятельно документировать возвращаемую структуру данных функции, которая использует однокадровый распределитель
Как самостоятельно задокументировать функцию, использующую пользовательский распределитель, чтобы напомнить, что ее пользователь не должен кэшировать возвращаемый результат. У меня есть библиотека и пользовательский класс, они используют...
37 просмотров
schedule 29.06.2023

Распределитель C++ STL в общей памяти — Windows
Прежде чем я начну, я хотел бы прояснить две вещи: Я не могу использовать Boost IPC для этого проекта и не могу использовать ничего, кроме оригинальных библиотек C/C++. Я посмотрел здесь и здесь для ответов и до сих пор не смог получить...
780 просмотров

Неправильный размер вектора с аллокаторами Boost
Следующая программа выделяет память для c , объекта типа C , в пространстве отображаемого в память файла. Добавление одного символа к вектору, содержащемуся в c , изменяет сообщаемый размер вектора с 0 на 18446744073709551520. #include...
103 просмотров
schedule 04.07.2022