File:  [parser3project] / parser3 / src / doc / memory.dox
Revision 1.2: download - view: text, annotated - select for diffs - revision graph
Thu Jul 24 11:31:20 2003 UTC (22 years, 10 months ago) by paf
Branches: MAIN
CVS tags: release_3_1_2, release_3_1_1, release_3_1_0, HEAD
moved tempate_gc to HEAD

/**	@page Memory  Memory: работа с памятью

Parser при работе с памятью целиком полагается на сборку мусора. См. http://www.hpl.hp.com/personal/Hans_Boehm/gc

Работа с памятью происходит так: все выделения происходят через pa_malloc pa_malloc_atomic, pa_realloc, pa_free, 
А для C++ перегружены соответствующие new. Для выделения памяти в C++ стиле не для объектов необходимо указать, будет ли выделяемый блок хранить указатели,
или нет: new(UseGC) означает "будет". new(PointerFreeGC) означает "не будет".

Для удобства выделения памяти для объектов имеется прародитель PA_Object, 
реализующий свой new через pa_malloc, и предоставляющий обёртки для malloc/malloc_atomic/realloc/free.
Рекомендуется, где возможно, выделять память в стиле C++ [через new], исключение допустимо для случая,
когда необходимо использовать realloc: на многих платформах new меняет указатель, выделенный распределителем, 
т.о. недопустимы new+realloc / realloc+delete.
*/

E-mail: