сборщик мусора boehm-а

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

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

Сообщение noch » 31.10.2005 11:12:26

Кто ни-будь кто лучше меня знает Си попытается перевести header-ы для использования сборщика с fpc?

<a href='http://www.hpl.hp.com/personal/Hans_Boehm/gc/' target='_blank'>http://www.hpl.hp.com/personal/Hans_Boehm/gc/</a>

Этот сборщик на мой взгляд самый зарекомендовавший себя из всех.
Аватара пользователя
noch
постоялец
 
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia

Сообщение Sniper » 31.10.2005 16:18:36

нужно юзать утилу h2pas из комплекта к FPC
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение PVOzerski » 01.11.2005 15:14:59

и еще переписывать менеджер памяти для FPC. Это не означает, по счастью, переделку RTL, хватит SetMemoryManager. Но забывать об этом нельзя.
PVOzerski
постоялец
 
Сообщения: 109
Зарегистрирован: 19.05.2005 13:45:10
Откуда: СПб

Сообщение Romtek » 01.11.2005 16:35:17

Об этом можно почитать здесь: <a href='http://community.freepascal.org:10000/bboards/message?message_id=115034&forum_id=24088' target='_blank'> garbage collector.</a>
Аватара пользователя
Romtek
постоялец
 
Сообщения: 190
Зарегистрирован: 22.05.2005 12:29:35
Откуда: Рамат Ган

Сообщение Иван Шихалев » 02.11.2005 01:15:59

А нафига, собственно?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение noch » 03.11.2005 15:37:00

Затем что все мы люди и нам свойственно ошибаться
Поэтому мы используем паскаль с жесткой типизацией.
Еще поэтому мы определяем переменные в секции var чтобы потом если ошибемся в их написании, компилятор сообщил об ошибке а не решил что это новая переменная с значением ноль как бейсик.
Если есть возможность прикрутить мусорщика то это здорово.

Спасибно за ссылки
Аватара пользователя
noch
постоялец
 
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia

Сообщение STAKANOV » 03.11.2005 16:28:29

Как я понимаю из описания у него те же функции что и у стандартного модуля <a href='http://freepascal.ru/wiki/index.php/Category:Heaptrc' target='_blank'>heaptrc</a>
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение noch » 04.11.2005 18:53:47

Не только, это библиотека, которую можно подключить к своим исходникам и заменить все маллок на его вызов, а о освобождении можно забыть

Память точно будет освобождена
Аватара пользователя
noch
постоялец
 
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia

Сообщение STAKANOV » 05.11.2005 10:48:23

noch писал(а): Не только, это библиотека, которую можно подключить к своим исходникам и заменить все маллок на его вызов, а о освобождении можно забыть

Память точно будет освобождена

вот только fpc не использует malloc ;)
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение PVOzerski » 06.11.2005 18:43:19

Хуже того, malloc не используется и в неявных выделениях блоков памяти при работе, например, с длинными стрками и динамическими массивами. И в операторе new тоже. Отсюда - необходимость замены всего менеджера памяти.
PVOzerski
постоялец
 
Сообщения: 109
Зарегистрирован: 19.05.2005 13:45:10
Откуда: СПб

Сообщение STAKANOV » 07.11.2005 01:33:25

PVOzerski писал(а): Хуже того, malloc не используется и в неявных выделениях блоков памяти при работе, например, с длинными стрками и динамическими массивами. И в операторе new тоже. Отсюда - необходимость замены всего менеджера памяти.

Спорный вопос. Паскалевский механизм выделения памяти считается более быстрым. Как я понимаю он принципиально такой. И такой же механизм был и у продуктов Borland (TP, Delphi). При запуске процесса ему система выделяет память для кучи, и менеджер памяти уже использует эту область памяти для размещения там данных. Размер кучи фиксирован на протяжении всего времени работы процесса. В принципе последнее это всетаки недостаток. Но если это всетаки критично, то можно использовать системнозависимые вызовы (для юникосв это mmap и shmget).
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение PVOzerski » 16.11.2005 21:23:21

У меня нет впечатления, что размер кучи неизменен. Я до сих пор думал (и пока еще думаю), что опциями компиляции можно управлять только ее начальным размером, а вот дальше по мере необходимости она может наращиваться. По крайней мере, в виндовом порте это сейчас (или недавно было?) реализовано через HeapAlloc и HeapRealloc.
PVOzerski
постоялец
 
Сообщения: 109
Зарегистрирован: 19.05.2005 13:45:10
Откуда: СПб


Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru