vpSec0, the argument in function Create...., is a copy of vpSec0. Its scope is local to the function. It disappears when the function returns. You should return the value and assign it to vpSec0.
Code:
void * vpSec0 = NULL;
vpSec0 = CreateHVFESection0();
Code:
void * CreateHVFESection0()
{
...
free(nbytes);
nbytes = NULL;
return vpSec0;
}
The alternative is to pass a pointer to vpSec0 and assign it in the function:
Code:
void * vpSec0 = NULL;
CreateHVFESection0(&vpSec0);
Code:
CreateHVFESection0(void ** vpSec0)
{
...
*vpSec0 = bitio_o_close(hSec0, nbytes);
free(nbytes);
nbytes = NULL;
}