Solucionado
Gracias por todas vuestras respuestas pongo el codigo para que veais como al final lo he conseguido, primero el metodo getline no me servia (devuelve una cadena hasta que ve un retorno de linea de manera que no me daba el binario completo) he usado
fread, y segundo no hacia bien el
malloc, no alocaba la memoria total que necesitaba, bueno asi lo he hecho y me ha funcionado correctamente:
Código:
char * m=(char*)malloc(size*sizeof(char));
if (m==NULL) return 3; //error
fread(m,sizeof(char),size,f); //vuelca el fich a memoria.
Al final mucho más sencillo que todo lo que estaba haciendo como me temia.
Gracias a todos.