Освобождает из памяти заданную переменную памяти или массив.
int _Release(NTI n) NTI n; /* Номер NTI освобождаемой переменной или массива. */ |
Примечания
_Release( ) возвращает 0, если она успешно освобождает переменную памяти или массив; в противном случае возвращается целое число, абсолютное значение которого представляет собой номер ошибки Visual FoxPro.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере освобождается переменная памяти, имя которой задано в виде символьного аргумента. _NameTableIndex( ) используется для получения номера NTI переменной.
Код Visual FoxPro
![]() | |
---|---|
SET LIBRARY TO RELEASE x = 123 = XRELEASE("x") |
Код C
![]() | |
---|---|
#include <pro_ext.h> FAR ReleaseEx(ParamBlk FAR *parm) { NTI nti; char FAR *name; int exitCode; Locator loc; // Null terminate character string, name of variable if (!_SetHandSize(parm->p[0].val.ev_handle, parm->p[0].val.ev_length+1)) { _Error(182); // "Insufficient memory" } _HLock(parm->p[0].val.ev_handle); name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle); name[parm->p[0].val.ev_length] = '\0'; if ((nti = _NameTableIndex(name)) == -1) { _HUnLock(parm->p[0].val.ev_handle); _UserError("Cannot find variable in name table."); } _HUnLock(parm->p[0].val.ev_handle); if (_FindVar(nti, -1, &loc)) { _PutStr("\nVariable exists prior to _Release()."); } if ((exitCode =_Release(nti)) < 0) { _Error(-exitCode); } _HLock(parm->p[0].val.ev_handle); name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle); name[parm->p[0].val.ev_length] = '\0'; if ((nti = _NameTableIndex(name)) != -1) { _PutStr("\n_NameTableIndex() still finds variable \ after it is released."); } _HUnLock(parm->p[0].val.ev_handle); if (!_FindVar(nti, -1, &loc)) { _PutStr("\nVariable does not exist after _Release()."); } } FoxInfo myFoxInfo[] = { {"XRELEASE", (FPFI) ReleaseEx, 1, "C"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Смотрите также
Справочное руководство
Процедура библиотеки API _ALen( )Процедура библиотеки API _RetCurrency( )
Процедура библиотеки API _RetDateTimeStr( )
Процедура библиотеки API _FindVar( )
Процедура библиотеки API _Load( )
Процедура библиотеки API _NameTableIndex( )
Процедура библиотеки API _NewVar( )
Процедура библиотеки API _Store( )
Прочие ресурсы
Конструкции библиотеки API
© Microsoft Corporation. All rights reserved. Microsoft is not reponsible for the contents of the translated help topics.