Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/11/2010, 05:45
DavidGen
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ¿cuanta memoria dinamica puedo reservar?

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.