Expertos en lenguaje C, duda punteros

Hola a todos.
Me estoy peleando haciendo un wrapper en C para manejar una libreria en C++ y ando a cuestas con los punteros.
El caso es que necesito llamar a una funcion desde C donde hay varios parametros de entrada y salida.
En concreto, tengo una funcion en la libreria que me devuelve por parametro un
vector<struct estructuraLibreria>
por lo que al llamar a la funcion desconozco la cantidad de estructuras que me va a devolver.

Para llamar a la funcion en C
int mifuncion(MiEstructura **miestructura, int *numeroEstructurasDevueltas);
me creo:
MiEstructura *miestructura;
int numeroEstructurasDevueltas=0;
int mifuncion_create(MiEstructura &miestructura, &numeroEstructurasDevueltas);

En el wrapper hecho en C++ llamo a la funcion de la libreria para obtener el
vector<struct estructuraLibreria>
y paso ese vector al puntero para poder recogerlo a la vuelta de la llamada en C:
int mifuncion_create(MiEstructura &miestructura, &numeroEstructurasDevueltas)
{
    vector<struct estructuraLibreria> tablaEstructurasLibreria;
    int ret = funcionLibreria(&tablaEstructurasLibreria);
    miestructura = (MiEstructura*)malloc(numeroEstructurasLibreria * sizeof(MiEstructura));
    for (int i=0; i<tablaEstructurasLibreria.size(); i++)
    {
      (*miestructura + (i * sizeof(MiEstructura)))->tipo = tablaEstructurasLibreria[i].tipo_accion;
      (*acciones_wpr + (i * sizeof(Accion_wpr)))->valor= tablaEstructurasLibreria[i].valor;
    }
    *numeroEstructurasDevueltas = tablaEstructurasLibreria.size();
}

Pero al recoger los datos en C despues de llamar a la funcion
mifuncion_create(MiEstructura &miestructura, &numeroEstructurasDevueltas)
me da el siguiente error
munmap_chunk(): invalid pointer

Me imagino que tiene que ver con la reserva de memoria y su posterior liberación. Pero no sé como hacerlo bien.
Cualquier ayuda me vendría de perlas
0 respuestas