libce
Libreria di Calcolatori Elettronici
Caricamento in corso...
Ricerca in corso...
Nessun risultato
Diagramma di collaborazione per Memoria dinamica:

Strutture dati

struct  heap::des_mem
 descrittore di una zona dello heap Continua...
 

Funzioni

void heap_init (void *start, size_t size)
 Inizializza un intervallo di memoria in modo che possa essere usata con alloc(), alloc_aligned() e dealloc().
 
void * alloc (size_t dim)
 Alloca una zona di memoria nello heap.
 
void * alloc_aligned (size_t dim, std::align_val_t align)
 Alloca una zona di memoria nello heap, con vincoli di allineamento.
 
void dealloc (void *p)
 Dealloca una zona di memoria, restituendola allo heap.
 
size_t disponibile ()
 Memoria libera nello heap.
 
natq heap_getinitmem ()
 Accedi alla testa della lista dei chunk liberi.
 
static des_memheap::natq2desmem (natq p)
 converte da intero a puntatore a descrittore
 
static natq heap::desmem2natq (des_mem *p)
 converte da puntatore a descrittore a intero
 
bool heap::free_interna (void *indirizzo, size_t quanti)
 aggiunge memoria allo heap
 

Variabili

des_memheap::memlibera = nullptr
 testa della lista delle zone libere
 

Overload standard.

Overloading degli operatori di default normalmente forniti dalla dalla libreria standard del C++. Si limitano a richiamare in modo appropriato operator new e operator delete, che devono esssere definiti a parte.

void * operator new[] (size_t s)
 versione di new per l'allocazione di array
 
void * operator new[] (size_t s, std::align_val_t a)
 versione di new per l'allocazione di array con allineamento
 
void operator delete (void *p, size_t s)
 versione di delete con dimensione esplicita
 
void operator delete (void *p, size_t s, std::align_val_t)
 versione di delete con dimensione esplicita e allineamento
 
void operator delete[] (void *p)
 versione di delete per la deallocazione degli array
 
void operator delete[] (void *p, size_t s)
 versione di delete per la deallocazione degli array con dimensione esplicita
 

Descrizione dettagliata

Queste funzioni definiscono un semplice allocatore di memoria che può essere usato per implementare gli operatori new e delete. La zona di memoria da usare come heap va prima inizializzata con heap_init().

Le funzioni sono definite nella directory heap.

Documentazione delle funzioni

◆ alloc()

void * alloc ( size_t dim)

Alloca una zona di memoria nello heap.

Parametri
dimdimensione in byte della zona da allocare
Restituisce
puntatore alla zona allocata se disponibile,
nullptr altrimenti

Definizione alla linea 9 del file alloc.cpp.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ alloc_aligned()

void * alloc_aligned ( size_t dim,
std::align_val_t align )

Alloca una zona di memoria nello heap, con vincoli di allineamento.

L'indirizzo restituito sarà multiplo dell'allineamento richiesto.

Parametri
dimdimensione in byte della zona da allocare
alignallineamento richiesto
Restituisce
puntatore alla zona allocata se disponibile, nullptr altrimenti

Definizione alla linea 5 del file alloc_aligned.cpp.

Questo è il grafo delle chiamate per questa funzione:

◆ dealloc()

void dealloc ( void * p)

Dealloca una zona di memoria, restituendola allo heap.

Parametri
ppuntatore alla zona da deallocare.

Il puntatore deve essere stato precedentemente ottenuto tramite alloc() o alloc_aligned().

Definizione alla linea 7 del file dealloc.cpp.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ desmem2natq()

static natq heap::desmem2natq ( des_mem * p)
inlinestatic

converte da puntatore a descrittore a intero

Parametri
ppuntatore al descrittore
Restituisce
intero corrispondente

Definizione alla linea 564 del file internal.h.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ disponibile()

size_t disponibile ( )

Memoria libera nello heap.

Restituisce
quantità di memoria attualmente libera nello heap

Definizione alla linea 5 del file disponibile.cpp.

Questo è il grafo delle chiamate per questa funzione:

◆ free_interna()

bool heap::free_interna ( void * indirizzo,
size_t quanti )

aggiunge memoria allo heap

Parametri
indirizzoindirizzo di partenza della memoria da aggiungere
quantiquanti byte aggiungere
Restituisce
false se non è stato possibile aggiungere la memoria

Definizione alla linea 13 del file free_interna.cpp.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ heap_getinitmem()

natq heap_getinitmem ( )

Accedi alla testa della lista dei chunk liberi.

Restituisce
indirizzo della testa della lista dei chunk liberi

Definizione alla linea 5 del file get_initmem.cpp.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ heap_init()

void heap_init ( void * start,
size_t size )

Inizializza un intervallo di memoria in modo che possa essere usata con alloc(), alloc_aligned() e dealloc().

L'intervallo deve essere accessibile in lettura e scrittura. L'allocatore mantiene una lista di chunk liberi e i descrittori dei chunk sono allocati nell'intervallo stesso.

Parametri
startbase dell'intervallo
sizedimensione in byte dell'intervallo

Definizione alla linea 5 del file heap_init.cpp.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ natq2desmem()

static des_mem * heap::natq2desmem ( natq p)
inlinestatic

converte da intero a puntatore a descrittore

Parametri
pintero da convertire
Restituisce
puntatore alla zona di memoria

Definizione alla linea 556 del file internal.h.

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione: