logo search
TurboProlog / Документация / TOM_2

Динамическое распределение памяти.

При написании функций на других языках вам часто необходимо распре-

делять память динамически. Поскольку Турбо Пролог контролирует программ-

ные ресурсы памяти, вы не можете использовать программы Турбо Си для рас-

пределения памяти.

Однако, в библиотеке Турбо Пролога имеются программы _malloc и _free

(Турбо Пролог-версии функций Си malloc и free). Когда вы связываете Турбо

Пролог и Си, если библиотека Турбо Пролога PROLOG.LIB указана раньше биб-

лиотеки Си, то эти программы будут взяты из PROLOG.LIB вместо библиотеки

Си.

void *_malloc(unsigned size);

void *_free(void *);

Если вы хотите разместить что-нибудь в глобальном стеке Турбо Проло-

га, то вы можете сделать это, вызвав библиотечную программу alloc_gstack:

void *alloc_gstack(unsigned size);

alloc_gstack возвращает указатель на блок памяти длиной size. Память от-

водится в глобальном стеке. Если вы используете alloc_gstack, то при неу-

дачном завершении память автоматически освобождается, обусловливая возв-

рат Турбо Пролога на распределение памяти.