Sí, la función read_ef la implementé yo. Esto es lo que hace:
1) Lee los 6 bytes de cabecera : Rótulo (2 bytes) + Longitud Fichero (4 bytes) .
2)Llamo a una función pre_len() que me devuelve un entero con la longitud indicada por los 4 bytes que la codifican.
3) Bucle while() que empieza a leer tramas (máximo: 256 bytes) hasta completar el fichero.
como antes de entrar a while() ya tengo la longitud real,¿ podría hacer un realloc en ese punto?
Código:
read_ef (unsigned char * buf, unsigned int * len){
//....leo los primeros 6 bytes y los almaceno en buf
//Almaceno en len la longitud del fichero EF:
pre_len(buf,len);
//¿hago realloc aquí? pero a donde apunta buf ya tengo 6 bytes almacenados
buf=(unsigned char*)realloc(buf,len);
//Para len<128*1024 estaré reduciendo memoria reservada no? podria evitarlo
// con un if (len>128*1024)
while(1){
//leo resto de datos almacenando en buf.......
}
}
Me queda la duda de si se puede realocar memoria en la que ya he almacenado 6 bytes, sin perder los datos. Gracias.