Если в вашей системе доступно mmap (2) , вы можете открыть файл и отобразить его в памяти. Таким образом, у вас нет памяти для выделения, вам даже не нужно читать файл, система сделает это. Вы можете использовать трюк fseek (), который дал литб, чтобы получить размер .
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
РЕДАКТИРОВАТЬ : Вы должны использовать lseek()
, чтобы получить размер файла,.
int fd = open("filename", O_RDONLY);
int nbytes = lseek(fd, 0, SEEK_END);
void *content = mmap(NULL, nbytes, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);