--- parser3/src/doc/memory.dox 2003/03/27 10:04:43 1.1 +++ parser3/src/doc/memory.dox 2003/07/24 11:31:20 1.2 @@ -0,0 +1,14 @@ +/** @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. +*/