0 Tage Serie
c / intermediate
Snippet

Flexible Array-Elemente in Strukturen

Ein flexibles Array-Element ist ein spezielles Array am Ende einer Struktur ohne Größenangabe. Es erlaubt der Struktur, als Kopfzeile für einen Speicherblock variabler Länge auf dem Heap zu fungieren.

snippet.c
c
1
2
3
4
5
6
7
8
#include <stdlib.h>
struct Buffer {
int capacity;
char data[];
};
struct Buffer *b = malloc(sizeof(struct Buffer) + 1024);
Erklärung
1
char data[];
Das flexible Array-Element; es muss das letzte Element sein.
2
malloc(sizeof(struct Buffer) + 1024);
Reserviert Speicher für die Struktur-Elemente plus 1024 Bytes für das Daten-Array.