Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зачем нужен аллокатор? 
:(
    Опции темы
Breezy
Дата 5.3.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 21.8.2003

Репутация: 1
Всего: 1



Я не великий знаток стл-я но пишу контейнер дружелюбный с стл-м и вот появляються проблемы с памятью.

Как обнаружилось то алокатор не вызывает конструктор класса, хотя страуструп пишет что он использует оператор new,delete которые это делают.

Вот и вопрос: что надо вручную инициализировать обекты?

И вообще стоит использовать алокатор? ведь можно обойтись new,delete?
PM MAIL   Вверх
Daevaorn
Дата 5.3.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Breezy, Если ты пишешь свой контейнер, то испольование аллокаторов исключительно твой выбор. Хочешь используй, хочешь нет. В stl контейнерах память может и выделяется через new, но не обязтельно при этом, что будут вызваны конструкторы объектов. За это в последствии отвечает сам код контейнера, который вызывает размещающий оператор new для выделенной аллокатором памяти. Ты же можешь для простоты вызывать обычный new (и соответсвенно delete).
PM MAIL WWW   Вверх
MAKCim
Дата 5.3.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

И вообще стоит использовать алокатор? ведь можно обойтись new,delete?

весь вопрос в повторности используемого кода
при использовании аллокатора появляется гибкость работы с памятью, т. е написав новый аллокатор мы в корне меняем управление выделением памяти для объектов контейнера при этом затратив минимум усилий (если их вообще придется затрачивать) на переделку самого контейнера


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Breezy
Дата 5.3.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 21.8.2003

Репутация: 1
Всего: 1



А в чем собственно гибкость аллокатора перед new? создаеш контейнер все что внутри конечного пользователя не касаеться...
Может аллокатор нужен для других целей? Мне лично привычней использовать new, код тоже будет проще писать, меньше мороки...
PM MAIL   Вверх
Daevaorn
Дата 5.3.2006, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Breezy,
Как сказал уже MAKCim - аллокатор добавляет гибкости. Разные аллокаторы могут по разному выделять память: из разных областей(кучи, стека и т.д.), разными блоками, адаптированными к размерам элементов. Вобщем позволяют улучшить работоспособность контейнера незаметным для него образом.
PM MAIL WWW   Вверх
Breezy
Дата 5.3.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 21.8.2003

Репутация: 1
Всего: 1



Тоесть морока на стадии проектирования стоит выделки. С этим разобрался.

И еще вопросик smile у меня дикая привязаность к автоматической подстановке. Тоесть привычка когда ставиш "."/"->" видеть члены класса. Почему когда пишеш шаблон то внутриение классы не распознаються? Это просто недоработка или так и надо?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.