|
|
| version 1.1, 2003/03/27 10:04:43 | version 1.2, 2003/07/24 11:31:20 |
|---|---|
| Line 0 | Line 1 |
| /** @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. | |
| */ |