malloc,calloc,reallocsono funzioni general purpose che usano system call per la gestione della memoria.
mmap di sys/mman.h
void *mmap(void *addr, size_t len, int prot, int flag, int fd, off_t off)serve per gestire il memory-mapped IO.
Permette la lettura/scrittura dal/sul buffer che risulta in lettura/scrittura dal/sul disco (senza accedere al disco).
- mappa un file su disco in un area di memoria (buffer) lunga
lengtha partire da un indirizzo di memoriaaddr(seaddr=0il sistema sceglie un indirizzo), ritornando un puntatorevoid *da castare al tipo di puntatore relativo al tipo di dato contenuto nella sezione di memoria puntata; altrimentiMAP_FAILEDse da errore. lenè il numero di byte da trasferire dal disco alla memoria,protè il livello di protezione. Può assumere i valori:PROT_READse la regione di memoria può essere letta,PROT_WRITEse la regione di memoria può essere scritta,PROT_EXECse la regione di memoria può essere eseguita,PROT_NONEse la regione di memoria non può essere acceduta.
flagpuò assumere i valori:MAP_SHAREDse le operazioni di memoria modificano il file (R/W);MAP_PRIVATEse viene creata e modificata solo una copia privata del mapped_file.
fdè il file descriptor (il file va aperto prima),offè l’offset iniziale del file.
brk e sbrk
Cambiano la dimensione del data segment del processo.