|
|
| version 1.2, 2003/07/24 11:31:20 | version 1.3, 2004/03/30 08:32:17 |
|---|---|
| Line 1 | Line 1 |
| /** @page Memory Memory: работа с памятью | /** @page Memory Memory: work with memory |
| Parser при работе с памятью целиком полагается на сборку мусора. См. http://www.hpl.hp.com/personal/Hans_Boehm/gc | Parser in it's work with memory relies on garbage collection. See http://www.hpl.hp.com/personal/Hans_Boehm/gc |
| Работа с памятью происходит так: все выделения происходят через pa_malloc pa_malloc_atomic, pa_realloc, pa_free, | Work with memory goes like this: |
| А для C++ перегружены соответствующие new. Для выделения памяти в C++ стиле не для объектов необходимо указать, будет ли выделяемый блок хранить указатели, | all allocations are in the end get to pa_malloc pa_malloc_atomic, pa_realloc, pa_free functions; |
| или нет: new(UseGC) означает "будет". new(PointerFreeGC) означает "не будет". | For C++ corresponding new operators are overloaded. |
| To allocate a memory in C++ style not for objects one should specify, | |
| will the block to-be-allocated contain pointers, | |
| new(UseGC) when "it will". new(PointerFreeGC) when "it will not". | |
| Для удобства выделения памяти для объектов имеется прародитель PA_Object, | For convinient memory allocation for objects there is root class PA_Object, |
| реализующий свой new через pa_malloc, и предоставляющий обёртки для malloc/malloc_atomic/realloc/free. | overriding new operator, implementing it with pa_malloc, |
| Рекомендуется, где возможно, выделять память в стиле C++ [через new], исключение допустимо для случая, | and providing wrappers for malloc/malloc_atomic/realloc/free. |
| когда необходимо использовать realloc: на многих платформах new меняет указатель, выделенный распределителем, | It is recommended, where it is possible, to allocate memory in C++ style [using new operator], |
| т.о. недопустимы new+realloc / realloc+delete. | exception can be made for a case where realloc is needed: |
| on many platforms new-operator changes the pointer, returned by new-operator-implementation allocator. | |
| that is new+realloc / realloc+delete are not allowed. | |
| */ | */ |