Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
#1

Как написать пуловый аллокатор для работы с объектами - C++

11.06.2015, 00:55. Просмотров 1144. Ответов 27
Метки нет (Все метки)

Здравствуйте! Подскажите как написать пуловый аллокатор для работы с объектами
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2015, 00:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как написать пуловый аллокатор для работы с объектами (C++):

Перегрузка арифметических операций для работы с объектами классов. - C++
Создать класс Animal, содержащий следующие элементы: - поле «вес» float Mass; - поле «пол» char* Sex; - поле «окрас» char* Color; ...

Реализуйте интерфейс динамической структуры list для работы с объектами класса А - C++
Добрый день товарищи программисты. Столкнулся с задачей и никак не могу решить... Так вот вопросы по заданию заключаются в следующем: ...

Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов - C++
Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов. Вот отрывок, надо...

на с++ нужно написать функцию с глобальными объектами - C++
пишу сюда впервые нужно написать программу для вычисления температуры смеси жидкости. Вычислительную часть алгоритма оформить как...

Написать программу с объектами из исходного кода - C++
Есть код программы на Borland, нужно переписать эту же программу, но с объектами. За подробностями в ЛС.

Аллокатор в chrome - C++
Всем привет, начал изучать исходники хрома, в аллокаторе, метод realloc должен возвращать nullptr если передаваемый аргумент size равен...

27
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
11.06.2015, 01:01 #2
Можете использовать/исследовать готовый:
http://www.boost.org/doc/libs/1_58_0/libs/pool/doc/html/index.html
Викиучебник: Boost.Pool
0
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
11.06.2015, 01:09  [ТС] #3
Просто я в этой теме не очень разбираюсь
Вот например: память под объекты какой командой выделяются и освобождаются
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
11.06.2015, 11:31 #4
new delete) пишем аллокатор, переопределяем методы new delete для класса
0
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
11.06.2015, 15:34  [ТС] #5
Я читал на хабре, что аллокаторы выигрывают в скорости в некоторых случаях по сравнению с new
aLarman
а как написать его =)
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
11.06.2015, 15:43 #6
Helldrg, я просто поинтересуюсь... У тебя где-то очень медленно выделяется память?
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
11.06.2015, 15:55 #7
Цитата Сообщение от Helldrg Посмотреть сообщение
а как написать его =)
да как угодно, говорите ему, мне надо 100500 байт, он окей вот отсюда бери, и вернет указатель, ну а потом placement new и готово
а как аллокатор память будет держать, ды как угодно, выделять по over 100500Кб памяти за раз например, ну или вообще стат кусок держать, это уж как Вы решите
castaway, смешно
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
11.06.2015, 16:08 #8
Цитата Сообщение от aLarman Посмотреть сообщение
castaway, смешно
Я серьёзно Просто я сильно сомневаюсь что у него именно с этим проблемы, если только его программа больше ничего не делает, кроме как выделяет и освобождает память.
0
aLarman
11.06.2015, 16:47
  #9

Не по теме:

castaway, собсно к тому же и веду, надо сделать, не потому что медленно работает, а потому что надо

0
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
11.06.2015, 16:49  [ТС] #10
castaway
Мне нужно часто создавать большое количество, объектов по мере работы (одинакового размера) и удалять лишние, для этого, как я понял нужен пуловый аллокатор.
Погуглив я нашел примеры с аллокаторами, но не разобрался в них, вот решил задать вопрос на форуме, может быть знающие объяснят по этапно на пальцах как сделать его.

Добавлено через 1 минуту
aLarman
Вы уж извините, может я конечно ошибаюсь, я считаю для этого аллокатор и придумали, не просто же так он существует
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
11.06.2015, 17:00 #11
Helldrg, пул (он же pool) - это заранее выделенный большой кусок памяти для большого количества объектов. Для его выделения можно использовать хоть malloc, хоть new.
Если размещаемые в нём объекты будут являться классовыми типами - тогда placement new (как говорил выше aLarman).
Иначе, просто копируй туда необходимые данные.
0
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
11.06.2015, 17:09  [ТС] #12
castaway
А вы бы не могли бы рассказать как это все делается
1) я так понял разницы не чем память выделять malloc c и new с++
2)Аллокатор в виде класса делать надо? Если да то какие функции должны быть
3)если можно функции описать из чего состоять должны
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
11.06.2015, 17:16 #13
Всё зависит от того, как ты это собираешься использовать, по этому пока не вижу смысла отвечать на эти вопросы.
Покажи как ты себе это представляешь (какие объекты, как много, для чего).
1
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,108
11.06.2015, 17:30  [ТС] #14
У меня несколько уровней, в которых создаются объекты. После конца уровня, этот участок не освобождается(или должен освобождаться я не знаю), а новый уровень начинает грузиться в эту же память. Так можно гарантировать, что после работы в течение многих часов не будет проблем с памятью. А в самом конце все это дело, удаляется. Вот этот аллокатор неверно можно назвать менеджером памяти.
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
11.06.2015, 17:38 #15
Я мало чего понял. Нужен пример где у тебя это не получается.
1
11.06.2015, 17:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2015, 17:38
Привет! Вот еще темы с ответами:

Пишем аллокатор - C++
дабы не захламлять и так уже захламленную тему про перегрузку операторов создаю новую тему, собственно по поводу аллокаторов прям...

Быстрый аллокатор - C++
Собственно, необходим аллокатор для быстрого выделения памяти под мелкие объекты, совместимый со стандартными контейнерами (std::list и...

Написать класс для работы со временем - C++
В общем, нужно написать класс время, создать перегрузки и так далее. А также сделать "красивый вывод" в поток, типа чч.мм:сс. Так вот,...

Написать программу, демонстрирующую работу с объектами двух типов - C++
Написать программу, демонстрирующую работу с объектами двух типов: Т1 и Т2, для чего создать систему соответствующих классов. Каждый объект...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru