mi-malloc 1.8/2.1
 
Lade...
Suche...
Keine Treffer
Grundlegende Allokation

Die grundlegende Allokationsschnittstelle. Mehr...

Funktionen

void mi_free (void *p)
 Zuvor alloziierten Speicher freigeben.
 
void * mi_malloc (size_t size)
 size Bytes allozieren.
 
void * mi_zalloc (size_t size)
 size Bytes null-initialisiert allozieren.
 
void * mi_calloc (size_t count, size_t size)
 count Elemente zu je size Bytes null-initialisiert allozieren.
 
void * mi_realloc (void *p, size_t newsize)
 Speicher auf newsize Bytes reallozieren.
 
void * mi_recalloc (void *p, size_t count, size_t size)
 Speicher auf count Elemente zu je size Bytes reallozieren, mit zusätzlich mit Null initialisiertem Speicher.
 
void * mi_expand (void *p, size_t newsize)
 Versuchen, Speicher direkt auf newsize Bytes zu reallozieren.
 
void * mi_mallocn (size_t count, size_t size)
 count Elemente zu je size Bytes allozieren.
 
void * mi_reallocn (void *p, size_t count, size_t size)
 count Elemente zu je size Bytes reallozieren.
 
void * mi_reallocf (void *p, size_t newsize)
 Speicher auf newsize Bytes reallozieren.
 
char * mi_strdup (const char *s)
 Eine Zeichenkette allozieren und duplizieren.
 
char * mi_strndup (const char *s, size_t n)
 Eine Zeichenkette bis zu n Bytes allozieren und duplizieren.
 
char * mi_realpath (const char *fname, char *resolved_name)
 Einen Dateipfad auflösen.
 

Detaillierte Beschreibung

Die grundlegende Allokationsschnittstelle.

Funktionsdokumentation

◆ mi_calloc()

void * mi_calloc ( size_t count,
size_t size )

count Elemente zu je size Bytes null-initialisiert allozieren.

Parameter
countAnzahl der Elemente.
sizeGröße jedes Elements.
Rückgabe
Zeiger auf den alloziierten Speicher von size*count Bytes, oder NULL bei Speichermangel oder wenn count*size überläuft.

Gibt einen eindeutigen Zeiger zurück, wenn mit size oder count von 0 aufgerufen wird.

Siehe auch
mi_zalloc()

◆ mi_expand()

void * mi_expand ( void * p,
size_t newsize )

Versuchen, Speicher direkt auf newsize Bytes zu reallozieren.

Parameter
pZeiger auf zuvor alloziierten Speicher (oder NULL).
newsizeDie neue erforderliche Größe in Bytes.
Rückgabe
Zeiger auf den realloziierten Speicher von newsize Bytes (immer gleich p), oder NULL bei Speichermangel oder wenn der Speicher nicht direkt erweitert werden konnte. Wenn NULL zurückgegeben wird, wird der Zeiger p nicht freigegeben. Andernfalls wird der ursprüngliche Zeiger als Ergebnis der Reallokation zurückgegeben, da er direkt mit der neuen Größe passt. Wenn newsize größer ist als die ursprünglich für p allozierte size, sind die Bytes nach size nicht initialisiert.

◆ mi_free()

void mi_free ( void * p)

Zuvor alloziierten Speicher freigeben.

Der Zeiger p muss zuvor alloziiert worden sein (oder NULL sein).

Parameter
pZu freizugebender Zeiger, oder NULL.

◆ mi_malloc()

void * mi_malloc ( size_t size)

size Bytes allozieren.

Parameter
sizeZu allozierende Anzahl von Bytes.
Rückgabe
Zeiger auf den alloziierten Speicher oder NULL bei Speichermangel. Gibt einen eindeutigen Zeiger zurück, wenn mit size 0 aufgerufen wird.

◆ mi_mallocn()

void * mi_mallocn ( size_t count,
size_t size )

count Elemente zu je size Bytes allozieren.

Parameter
countDie Anzahl der Elemente.
sizeDie Größe jedes Elements.
Rückgabe
Ein Zeiger auf einen Block von count * size Bytes, oder NULL bei Speichermangel oder wenn count * size überläuft.

Wenn kein Überlauf auftritt, verhält es sich exakt wie mi_malloc(count*size).

Siehe auch
mi_calloc()
mi_zallocn()

◆ mi_realloc()

void * mi_realloc ( void * p,
size_t newsize )

Speicher auf newsize Bytes reallozieren.

Parameter
pZeiger auf zuvor alloziierten Speicher (oder NULL).
newsizeDie neue erforderliche Größe in Bytes.
Rückgabe
Zeiger auf den realloziierten Speicher von newsize Bytes, oder NULL bei Speichermangel. Wenn NULL zurückgegeben wird, wird der Zeiger p nicht freigegeben. Andernfalls wird der ursprüngliche Zeiger entweder freigegeben oder als Ergebnis der Reallokation zurückgegeben (falls er direkt mit der neuen Größe passt). Wenn der Zeiger p NULL ist, verhält es sich wie mi_malloc(newsize). Wenn newsize größer ist als die ursprünglich für p allozierte size, sind die Bytes nach size nicht initialisiert.

◆ mi_reallocf()

void * mi_reallocf ( void * p,
size_t newsize )

Speicher auf newsize Bytes reallozieren.

Parameter
pZeiger auf zuvor alloziierten Speicher (oder NULL).
newsizeDie neue erforderliche Größe in Bytes.
Rückgabe
Zeiger auf den realloziierten Speicher von newsize Bytes, oder NULL bei Speichermangel.

Im Gegensatz zu mi_realloc() wird bei Rückgabe von NULL der ursprüngliche Zeiger p freigegeben (falls er nicht selbst NULL war). Andernfalls wird der ursprüngliche Zeiger entweder freigegeben oder als Ergebnis der Reallokation zurückgegeben (falls er direkt mit der neuen Größe passt). Wenn der Zeiger p NULL ist, verhält es sich wie mi_malloc(newsize). Wenn newsize größer ist als die ursprünglich für p allozierte size, sind die Bytes nach size nicht initialisiert.

Siehe auch
reallocf (auf BSD)

◆ mi_reallocn()

void * mi_reallocn ( void * p,
size_t count,
size_t size )

count Elemente zu je size Bytes reallozieren.

Parameter
pZeiger auf einen zuvor alloziierten Block (oder NULL).
countDie Anzahl der Elemente.
sizeDie Größe jedes Elements.
Rückgabe
Ein Zeiger auf einen realloziierten Block von count * size Bytes, oder NULL bei Speichermangel oder wenn count * size überläuft.

Wenn kein Überlauf auftritt, verhält es sich exakt wie mi_realloc(p,count*size).

Siehe auch
reallocarray() (auf BSD)

◆ mi_realpath()

char * mi_realpath ( const char * fname,
char * resolved_name )

Einen Dateipfad auflösen.

Parameter
fnameDateiname.
resolved_nameSollte NULL sein (kann aber auch auf einen Puffer von mindestens PATH_MAX Bytes zeigen).
Rückgabe
Bei Erfolg ein Zeiger auf den aufgelösten absoluten Dateinamen, oder NULL im Fehlerfall (mit errno auf den Fehlercode gesetzt).

Wenn resolved_name NULL war, sollte das zurückgegebene Ergebnis mit mi_free() freigegeben werden.

Ersatz für die Standardfunktion realpath(), damit mi_free() auf das zurückgegebene Ergebnis angewendet werden kann (wenn resolved_name NULL war).

◆ mi_recalloc()

void * mi_recalloc ( void * p,
size_t count,
size_t size )

Speicher auf count Elemente zu je size Bytes reallozieren, mit zusätzlich mit Null initialisiertem Speicher.

Parameter
pZeiger auf einen zuvor alloziierten Block (oder NULL).
countDie Anzahl der Elemente.
sizeDie Größe jedes Elements.
Rückgabe
Ein Zeiger auf einen realloziierten Block von count * size Bytes, oder NULL bei Speichermangel oder wenn count * size überläuft.

Wenn kein Überlauf auftritt, verhält es sich exakt wie mi_rezalloc(p,count*size).

Siehe auch
mi_reallocn()
recallocarray() (auf BSD).

◆ mi_strdup()

char * mi_strdup ( const char * s)

Eine Zeichenkette allozieren und duplizieren.

Parameter
sZu duplizierende Zeichenkette (oder NULL).
Rückgabe
Ein Zeiger auf neu alloziierten Speicher, initialisiert mit der Zeichenkette s, oder NULL bei Speichermangel oder wenn s NULL ist.

Ersatz für die Standardfunktion strdup(), damit mi_free() auf das zurückgegebene Ergebnis angewendet werden kann.

◆ mi_strndup()

char * mi_strndup ( const char * s,
size_t n )

Eine Zeichenkette bis zu n Bytes allozieren und duplizieren.

Parameter
sZu duplizierende Zeichenkette (oder NULL).
nMaximale Anzahl von zu kopierenden Bytes (ohne das abschließende Nullzeichen).
Rückgabe
Ein Zeiger auf neu alloziierten Speicher, initialisiert mit der Zeichenkette s bis zu den ersten n Bytes (und immer nullterminiert), oder NULL bei Speichermangel oder wenn s NULL ist.

Ersatz für die Standardfunktion strndup(), damit mi_free() auf das zurückgegebene Ergebnis angewendet werden kann.

◆ mi_zalloc()

void * mi_zalloc ( size_t size)

size Bytes null-initialisiert allozieren.

Parameter
sizeDie Größe in Bytes.
Rückgabe
Zeiger auf neu alloziierten, null-initialisierten Speicher, oder NULL bei Speichermangel.