Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
1 | |
Как написать пуловый аллокатор для работы с объектами11.06.2015, 00:55. Просмотров 1379. Ответов 27
Метки нет Все метки)
(
Здравствуйте! Подскажите как написать пуловый аллокатор для работы с объектами
0
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
11.06.2015, 00:55 |
Ответы с готовыми решениями:
27
Реализуйте интерфейс динамической структуры list для работы с объектами класса А Написать программу для проверки работы процедуры ScalarProduct для вычисления скалярного произведения двух векторов Написать программу с объектами из исходного кода на с++ нужно написать функцию с глобальными объектами |
Croessmah
++Ͻ
|
|
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
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 01:09 [ТС] | 3 |
Просто я в этой теме не очень разбираюсь
Вот например: память под объекты какой командой выделяются и освобождаются
0
|
Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 15:34 [ТС] | 5 |
Я читал на хабре, что аллокаторы выигрывают в скорости в некоторых случаях по сравнению с new
aLarman а как написать его =)
0
|
aLarman
|
|
11.06.2015, 15:55 | 7 |
да как угодно, говорите ему, мне надо 100500 байт, он окей вот отсюда бери, и вернет указатель, ну а потом placement new и готово
а как аллокатор память будет держать, ды как угодно, выделять по over 100500Кб памяти за раз например, ну или вообще стат кусок держать, это уж как Вы решите castaway, смешно ![]()
0
|
castaway
![]() |
|
11.06.2015, 16:08 | 8 |
Я серьёзно
![]()
0
|
aLarman
|
11.06.2015, 16:47
#9
|
Не по теме: castaway, собсно к тому же и веду, надо сделать, не потому что медленно работает, а потому что надо
0
|
Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 16:49 [ТС] | 10 |
castaway
Мне нужно часто создавать большое количество, объектов по мере работы (одинакового размера) и удалять лишние, для этого, как я понял нужен пуловый аллокатор. Погуглив я нашел примеры с аллокаторами, но не разобрался в них, вот решил задать вопрос на форуме, может быть знающие объяснят по этапно на пальцах как сделать его. Добавлено через 1 минуту aLarman Вы уж извините, может я конечно ошибаюсь, я считаю для этого аллокатор и придумали, не просто же так он существует
0
|
castaway
![]() |
|
11.06.2015, 17:00 | 11 |
Helldrg, пул (он же pool) - это заранее выделенный большой кусок памяти для большого количества объектов. Для его выделения можно использовать хоть malloc, хоть new.
Если размещаемые в нём объекты будут являться классовыми типами - тогда placement new (как говорил выше aLarman). Иначе, просто копируй туда необходимые данные.
0
|
Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 17:09 [ТС] | 12 |
castaway
А вы бы не могли бы рассказать как это все делается 1) я так понял разницы не чем память выделять malloc c и new с++ 2)Аллокатор в виде класса делать надо? Если да то какие функции должны быть 3)если можно функции описать из чего состоять должны
0
|
castaway
![]() |
|
11.06.2015, 17:16 | 13 |
Всё зависит от того, как ты это собираешься использовать, по этому пока не вижу смысла отвечать на эти вопросы.
Покажи как ты себе это представляешь (какие объекты, как много, для чего).
1
|
Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 17:30 [ТС] | 14 |
У меня несколько уровней, в которых создаются объекты. После конца уровня, этот участок не освобождается(или должен освобождаться я не знаю), а новый уровень начинает грузиться в эту же память. Так можно гарантировать, что после работы в течение многих часов не будет проблем с памятью. А в самом конце все это дело, удаляется. Вот этот аллокатор неверно можно назвать менеджером памяти.
0
|
Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 17:42 [ТС] | 16 |
castaway
Вот поэтому я и создал тему на форуме, я не понимаю как сделать аллокатор. Напишите хотя бы простенький пример, а я спрошу чего не понимаю у вас Примеры с Интернета вообще не помогли мне
0
|
Helldrg
27 / 56 / 6
Регистрация: 10.01.2011
Сообщений: 1,172
|
|
11.06.2015, 21:22 [ТС] | 18 |
Я сейчас с телефона смотрю, отвечу как за компьютер сяду
Добавлено через 10 минут If(id ==0) { a = new ClassA(1000); for(int i = 0;i <1000;i++) { a = Init(i); } }else if(id == 1){ И тд } Извиняюсь за краткость, я в деревне, компьютер не ловит связь,а с телефона не удобна набирать
0
|
Perfilov
264 / 164 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
11.06.2015, 21:39 | 19 |
есть такая книжка:
Современное проектирование на C++ Автор: Андрей Александреску там целая глава посвящена разработке своего аллокатора. детальки, ньюансы и прочее полезное присутствует. советую ознакомится, будет быстрее чем с форума по немногу от каждого советы парсить.
1
|
castaway
![]() |
|||||||||||
11.06.2015, 21:42 | 20 | ||||||||||
![]() Решение
Я опять ничего не понял. Вот тебе пример через placement new. Изучай.
1
|
11.06.2015, 21:42 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
11.06.2015, 21:42 |
Написать класс , объектами которого являются матрицы размера 3 х 3
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |