La función malloc reserva un espacio de memoria del tamaño (en bytes) que se le indique, y devuelve un puntero de tipo void al bloque de memoria asignado. Si el puntero devuelto no es NULL (si lo fuese es que habría un error en la asignación de memoria), tendrñas que hacer un cast al tipo de dato que estés empleando. Por ejemplo:
int *ptr;
ptr = (int *)malloc(10*sizeof(int));
te devolvería un puntero a un bloque de memoria en el que has reservado espacio para 10 números enteros.
En cuanto al archivo, ¿Lo estás abriendo con open, o con fopen? La primera la tienes en io.h (ojo, creo que no pertenece al standard ANSI y puede que no esté en este archivo, depende del compilador), es para programación a más bajo nivel, podrás hacer más cosas pero es más complicado. Devuelve un número entero que te servirá para referenciar al fichero. Un fichero abierto con fopen es más sencillo de manejar. fopen la tienes en stdio.h, devuelve un puntero a una estructura de datos de tipo FILE*, echa un ojo a stdio.h que ahí te viene la estructura.
Sobre lo de reservar memoria con malloc para el archivo, evidentemente depende de lo que quieras hacer. Si puedes dar algún otro detalle, quizás pueda indicarte algo más.
Saludos,