--- parser3/src/doc/pooled.dox 2001/05/03 15:05:20 1.1 +++ parser3/src/doc/pooled.dox 2002/12/27 09:11:45 1.4 @@ -1,15 +1,21 @@ -/** @page Pooled Pooled: ТБВПФБ У РБНСФША +/** @page Pooled Pooled: работа с памятью -тБВПФБ У РБНСФША РТПЙУИПДЙФ ФБЛ: ЧУЕ ЧЩДЕМЕОЙС РТПЙУИПДСФ ЮЕТЕЪ Pool::malloc Й Pool::calloc, -ДМС ХДПВУФЧБ ЙНЕЕФУС Pooled ТПДЙФЕМШ, ЙОЛБРУХМЙТХАЭЙК ЛМБУУ Pool, Й ЙНЕАЭЙК ПДОПЙНЈООЩЕ ПВЈТФЛЙ: -Pooled::malloc Й Pooled::calloc, Б ФБЛЦЕ ЖХОЛГЙА Pooled::pool() ДМС ДПУФХРБ Л УБНПНХ pool'Х. -лПЗДБ ПУЧПВПЦДБЕФУС РБНСФШ ЪБЧЙУЙФ ПФ ЧБТЙБОФБ УВПТЛЙ: -- apache: ДЕМБЕФ ЬФП ЪБ НПДХМС; -- CGI: ЧППВЭЕ ОЙЮЕЗП ОЕ ПУЧПВПЦДБЕФ, УНЕТФШ РТПГЕУУБ ЧУЈ УРЙУЩЧБЕФ; -- ISAPI extension: ПУЧПВПЦДБЕФУС Ч Pooled:~Pooled(). +Работа с памятью происходит так: все выделения происходят через Pool::malloc и Pool::calloc, +для удобства имеется Pooled родитель, инкапсулирующий класс Pool, и имеющий одноимённые обёртки: +Pooled::malloc и Pooled::calloc, а также функцию Pooled::pool() для доступа к самому pool'у. +Когда освобождается память зависит от варианта сборки: +- Apache: делает это сам; +- CGI: вообще ничего не освобождает, смерть процесса всё списывает; +- ISAPI extension: освобождается в Pooled:~Pooled(). -тБВПФБ У ЙУЛМАЮЕОЙСНЙ РТПЙУИПДЙФ ЮЕТЕЪ ЛМБУУ Exception, ЙОЛБРУХМЙТПЧБООЩК Ч Pooled. -дМС ДПУФХРБ Л ОЕНХ ЙНЕЕФУС ЖХОЛГЙС Pooled::exception(). -еУМЙ ЧПЪОЙЛБЕФ РТПВМЕНБ, ЕЈ УМЕДХЕФ THROW. й ЗДЕ-ФП CATCH. +Все исключения в Parser имеют тип Exception, если возникает проблема, +следует бросить C++ исключение этого типа +@code + throw Exception("класс ошибки", + &method_name, // адрес String, содержащей текст/место ошибки + "проблема %d", error_code); +@endcode +"Класс ошибки" следует задать один из системных, +придумать хороших свой, или не задавать вовсе. */ \ No newline at end of file