_Release( ) (Rutina de biblioteca API)
Libera de la memoria la matriz o la variable de memoria especificada.
int _Release(NTI n)
NTI n; /* NTI number of variable or array
to release. */
Observaciones
_Release( ) devuelve 0 si libera la matriz o la variable de memoria, o devuelve un entero cuyo valor absoluto es un número de error de Visual FoxPro si falla.
Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.
Ejemplo
El ejemplo siguiente libera una variable de memoria cuyo nombre se introduce como argumento de tipo carácter. _NameTableIndex( ) se emplea para encontrar el NTI de la variable.
Código Visual FoxPro
SET LIBRARY TO RELEASE
x = 123
= XRELEASE("x")
Código 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
};
Vea también
_ALen( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _FindVar( ) (Rutina de biblioteca API) | _Load( ) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API)