Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.4. Отведение памяти и преобразование строк
А.5.4.2. rdsAllocate – динамическое отведение области памяти
Функция rdsAllocate отводит в динамической памяти RDS (т.н. «куча», «heap») область заданного размера.
LPVOID RDSCALL rdsAllocate( DWORD Size // Размер отводимой области );
Тип указателя на эту функцию
RDS_pVDw
Параметр
- Size (DWORD)
- Размер отводимой области в байтах.
Возвращаемое значение
Указатель на отведенную область памяти.
Примечания
Эта функция используется для отведения памяти для нужд моделей блоков и модулей автоматической компиляции, а также при работе со строковыми статическими переменными блока. Она отводит в динамической памяти RDS область размером в Size байтов и возвращает указатель на эту область. Возвращается указатель произвольного вида (LPVOID, то есть void*), поэтому перед использованием этот указатель обычно приводят к типу, соответствующему данным, которые будут храниться в этой области.
Отведенную таким образом область обязательно нужно освободить вызовом функции rdsFree после того, как она станет не нужна.
Использование именно этой функции вместо стандартных для языка C функций malloc/calloc или оператора C++ new удобно тем, что область памяти, отведенная одним блоком при помощи rdsAllocate, может быть освобождена другим блоком при помощи rdsFree. Со стандартными функциями это было бы невозможным: нет никакой гарантии, что менеджер памяти, используемый моделью одного блока, совместим с менеджером памяти модели другого. При использовании функций rdsAllocate/rdsFree в роли менеджера памяти выступает RDS, поэтому проблем с совместимостью не возникает.
Пример
Пример использования функции rdsAllocate для работы со строковыми переменными блока приведен в §2.5.4 руководства программиста.
См. также