3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
|
||||||
1 | ||||||
Работа с allocator (управление памятью)28.02.2012, 22:26. Показов 3935. Ответов 5
Метки нет (Все метки)
Нормальной инфы на русском языке я так и не нашел в инете( про него читал в книге Программирование принципы и практика С++ Страуструп, но там так и реализацию функции для своего аллокатора , только дали интерфейс класс ), понял что есть 4 основные функции
кто сними работал расскажите про него, вот к примеру у меня есть свой вектор но как сделать так что бы я мог добавлять в него обьекты которые не имеют конструктора по умолчанию, как в аллокаторе выделять память?
0
|
28.02.2012, 22:26 | |
Ответы с готовыми решениями:
5
Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой Распределитель памяти идентичный std::allocator. Непонятные синтаксис и концепция std::allocator::construct Управление памятью в Qt Управление памятью в C++ |
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
28.02.2012, 22:32 | 2 | |||||
1
|
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
|
||||||
28.02.2012, 23:53 [ТС] | 3 | |||||
прокоментируйте вот это строчку A* a = new (data)A();
только у меня еще 3 вопроса. Как реализовать функцию деаллок? правильно ли я реализовал конструкт? и что мне делать в деструкторе контейнера для которого использую аллокатор( у меня вектор) я так понял вызывать метод деаллок?
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
29.02.2012, 00:28 | 4 | |||||
это placement new - не на гугл же мне ссылку давать
2
|
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
|
||||||
29.02.2012, 02:09 [ТС] | 5 | |||||
alex_x_x, я так понял placement new за указанным адресом создает обьект?
тоесть можно писать вот так
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
29.02.2012, 02:44 | 6 | |||||
зачем так делать, если можно просто int* p = new int(5); К тому же это будет глючить в случае более сложных чем инт объектов. Сложный объект сперва создастся обычным способом (из-за new в скобочках) (для него повозется конструктор в котором поделается что-то очень важное), а потом на память в которой он находится накатят еще один объект (еще раз позовется конструктор). Действия конструктора при первом конструировании не отменятся. Ну в общем такое двойное конструирование объекта в одной и той же памяти. Так же плохо, как и двойное удаление одного и того же.
0
|
29.02.2012, 02:44 | |
29.02.2012, 02:44 | |
Помогаю со студенческими работами здесь
6
Управление памятью Управление памятью Управление памятью Управление памятью Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |