Освобождает из памяти заданную переменную памяти или массив.
int _Release(NTI n) NTI n; /* Номер NTI освобождаемой переменной или массива. */ |
Примечания
_Release( ) возвращает 0, если она успешно освобождает переменную памяти или массив; в противном случае возвращается целое число, абсолютное значение которого представляет собой номер ошибки Visual FoxPro.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере освобождается переменная памяти, имя которой задано в виде символьного аргумента. _NameTableIndex( ) используется для получения номера NTI переменной.
Код Visual FoxPro
Copy Code | |
|---|---|
SET LIBRARY TO RELEASE
x = 123
= XRELEASE("x") | |
Код C
Copy Code | |
|---|---|
#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.