Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.4. Отведение памяти и преобразование строк

А.5.4.2. rdsAllocate – динамическое отведение области памяти

# Приложения

## Приложение А. Функции, константы и структуры 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 руководства программиста.

См. также

rdsFree.