libce
Libreria di Calcolatori Elettronici
|
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_mem * | heap::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_mem * | heap::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 | |
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 | |
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
.
void * alloc | ( | size_t | dim | ) |
Alloca una zona di memoria nello heap.
dim | dimensione in byte della zona da allocare |
nullptr
altrimenti Definizione alla linea 9 del file alloc.cpp.
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.
dim | dimensione in byte della zona da allocare |
align | allineamento richiesto |
nullptr
altrimenti Definizione alla linea 5 del file alloc_aligned.cpp.
void dealloc | ( | void * | p | ) |
Dealloca una zona di memoria, restituendola allo heap.
p | puntatore alla zona da deallocare. |
Il puntatore deve essere stato precedentemente ottenuto tramite alloc() o alloc_aligned().
Definizione alla linea 7 del file dealloc.cpp.
converte da puntatore a descrittore a intero
p | puntatore al descrittore |
Definizione alla linea 564 del file internal.h.
size_t disponibile | ( | ) |
Memoria libera nello heap.
Definizione alla linea 5 del file disponibile.cpp.
bool heap::free_interna | ( | void * | indirizzo, |
size_t | quanti ) |
aggiunge memoria allo heap
indirizzo | indirizzo di partenza della memoria da aggiungere |
quanti | quanti byte aggiungere |
Definizione alla linea 13 del file free_interna.cpp.
natq heap_getinitmem | ( | ) |
Accedi alla testa della lista dei chunk liberi.
Definizione alla linea 5 del file get_initmem.cpp.
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.
start | base dell'intervallo |
size | dimensione in byte dell'intervallo |
Definizione alla linea 5 del file heap_init.cpp.
converte da intero a puntatore a descrittore
p | intero da convertire |
Definizione alla linea 556 del file internal.h.