Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > собственный сборщик мусора


Автор: Jcs 8.1.2004, 09:43
Писал ли кто-нибудь свой распределитель памяти и сборщик мусора? Можно ли в своем распределителе использовать стандартный сборщик мусора (насколько я знаю, написать эффективный сборщик - задача довольно нетривиальная). Спасибо.

Автор: Hroft 8.1.2004, 11:46
На мой взгляд, не следует с этим вообще связываться. Есть книга Джеффа Элджера из серии "библиотека программиста", там это описано. Как я понимаю, ты именно ее и прочитал. Это имеет смысл при необычных требованиях к быстродействию, ведь кача размещается в стеке (!), где выделение происходит быстрее. А вообще обычно достаточно умных указателей, даже простых auto_ptr<>. Да, кстати, не знал, что хотя бы один из существующих компиляторов С++ поддерживает сборку мусора (это, как я понимаю, нахождение безымянных областей памяти и исправление неверных указателей). В яве есть, а в срр нету, по-моему.

Автор: DENNN 8.1.2004, 12:40
Цитата
Да, кстати, не знал, что хотя бы один из существующих компиляторов С++ поддерживает сборку мусора

это потдерживает managed с++ из NET

Автор: Jcs 8.1.2004, 15:43
Мне просто интересно, как они, эти встроенные сборщики работают (по скорости). Мне, к примеру, нужно чтобы все динамические объекты создавались в определенном банке памяти (для микропроцессорного варианта), с адреса а0 по аN. Да и стандартный менеджер слишком медленно работает с большим количеством маленьких объектов (создаваемых и удаляемых), поэтому подобная дилемма и возникла. А опыта работы со встроенным сборщиками практически нет. Вот и думаю как поступить.. Спасибо за отклик.

Автор: DENNN 8.1.2004, 16:00
В таких случаях обычно пишут свой менеджер памяти, который берет на себя функции опреаторов new и delete - самое эффективное в данном случае решение. Тогда при запуске менежер захватывает в свой кеш большой кусок памяти и раздает ее из кеша.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)