Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Helldrg
26 / 55 / 6
Регистрация: 10.01.2011
Сообщений: 1,153
#1

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

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

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

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

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

Написать программу с объектами из исходного кода
Есть код программы на Borland, нужно переписать эту же программу, но с...

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

Написать класс для работы со временем
В общем, нужно написать класс время, создать перегрузки и так далее. А также...

27
Helldrg
26 / 55 / 6
Регистрация: 10.01.2011
Сообщений: 1,153
11.06.2015, 22:05  [ТС] #21
Спасибо большое, а почему pool имеет тип char, почему смещение равняется 16 и что обозначает new() выражение в скобках
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
11.06.2015, 22:14 #22
Цитата Сообщение от Helldrg Посмотреть сообщение
а почему pool имеет тип char
Можно сделать тип A, но тогда оператор new сконструирует 1000000 экземпляров класса A, но этого можно избежать, выделив память через malloc.

Цитата Сообщение от Helldrg Посмотреть сообщение
почему смещение равняется 16
Для наглядности. В данном случае можешь конструировать в любом диапазоне от 0 до 999999.

Цитата Сообщение от Helldrg Посмотреть сообщение
что обозначает new() выражение в скобках
Это называется placement new. Выражение в скобках - адрес, по которому необходимо сконструировать объект(ы).
1
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,919
Записей в блоге: 3
Завершенные тесты: 1
12.06.2015, 03:56 #23
Цитата Сообщение от castaway Посмотреть сообщение
но тогда оператор new сконструирует 1000000 экземпляров класса
конкретно operator new ничего не сконструирует
Цитата Сообщение от castaway Посмотреть сообщение
но этого можно избежать, выделив память через malloc.
можно использовать именно operator new, а не new-expression
1
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
12.06.2015, 08:03 #24
Цитата Сообщение от Croessmah Посмотреть сообщение
конкретно operator new ничего не сконструирует
Ок. Сконструирует код, который сконструирует компилятор, который в своё время сконструировал разработчик, которого в своё время сконструировали родители.
Так пойдёт?

Цитата Сообщение от Croessmah Посмотреть сообщение
можно использовать именно operator new, а не new-expression
Можно. А можно и malloc. Это был пример.

Не придирайся.
1
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,919
Записей в блоге: 3
Завершенные тесты: 1
12.06.2015, 17:44 #25
Цитата Сообщение от castaway Посмотреть сообщение
Не придирайся.
просто уточнил, что operator new не вызывает конструкторы. Ничего личного
0
Helldrg
26 / 55 / 6
Регистрация: 10.01.2011
Сообщений: 1,153
14.06.2015, 23:25  [ТС] #26
castaway
Извиняюсь, Интернет пропал в деревне =)
Значит 16 это смещение, что бы в пуле, что бы новый объект записался в свободную память, а не в память предыдущего объекта и в данном случае 16 измеряется в объектах? то есть что бы второй объект записать надо написать так:
C++
1
new((A *)pool + 1)
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
15.06.2015, 05:49 #27
Да, измеряется в объектах типа A.
Да, чтобы создать второй объект надо (можно) написать так.
1
Helldrg
26 / 55 / 6
Регистрация: 10.01.2011
Сообщений: 1,153
15.06.2015, 09:39  [ТС] #28
castaway
Спасибо большое, трудную тему помогли разъяснить!!!
0
15.06.2015, 09:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2015, 09:39
Привет! Вот еще темы с решениями:

Написать класс , объектами которого являются матрицы размера 3 х 3
Написать класс , объектами которого являются матрицы размера 3 х 3, для этого...

Написать программу, демонстрирующую работу с объектами двух типов
Написать программу, демонстрирующую работу с объектами двух типов: Т1 и Т2, для...

Написать класс для эффективной работы со строками
Вариант 13 Написать класс для эффективной работы со строками, позволяющий...

Написать класс для работы с телефонными номерами
Помогите, пожалуйста, написать программу.. Реализуйте набор основных функций...


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

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

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