Función que reserva memoria

24/01/2005 - 17:59 por Willser F. González C. | Informe spam
Hola,

Tengo las siguientes líneas en una DLL:

bool FuncionX();

bool ReservarMemoria(unsigned char **i_ppucBuffer,
long i_lSize);

bool FuncionX()
{
unsigned char *l_pucBuffer = NULL;

if (ReservarMemoria(l_pucBuffer, 10000000))
{
printf ("OK");

LlamarAFuncionDeTercero(l_pucBuffer);

free(l_pucBuffer);

return (true);
}

printf ("NO OK");

return (false);
}

bool ReservarMemoria(unsigned char **i_ppucBuffer,
long i_lSize)
{
*i_ppucBuffer = NULL;

i_ppucBuffer = (unsigned char *) malloc(i_lSize);

if (i_ppucBuffer == NULL)
return (false);

return (true);
}

La idea es que la segunda función debe hacer la reserva de memoria. No
utilizo new debido a problemas de "compatibilidad" con unas DLLs de
terceros. La pregunta concreta es: es esta la forma como debo declarar el
primer parámetro y su respectiva reserva de memoria?.

Haciendo seguimiento de la funcion "FuncionX()" de la DLL desde un programa
VC++ esta se ejecuta sin problemas, pero si llamo a "FuncionX()" desde una
aplicación Visual Basic se presenta un error en la línea
"free(l_pucBuffer)", pero este error sólo se presenta la primera vez que
llamo a "FuncionX()", si la llamo nuevamente de manera consecutiva, el error
no se vuelve a presentar. También he notado que una vez termine la
ejecución de la aplicación VB y vuelvo a lanzarla, entonces ya no se
presenta el error en el primer llamado a "FuncionX()". La aplicación VB se
lanza simpre desde el Visual Basic, no desde su propio ejecutable. Alguien
puede sugerirme alguna causa?

Willser F.
willser@latinmail.com
 

Leer las respuestas

#1 Rodrigo Corral [MVP]
25/01/2005 - 20:20 | Informe spam
Yo a simple vista no veoy nada raro en el código!!!


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org

Preguntas similares