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;
}