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
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.