Struktura v C pod jinou strukturou, která def. velikost polí

Nemůže to být statické pole (protože by byla proměnlivá velikost struktury), musí se použít dynamicky alokovaná pole:

typedef struct{ unsigned char* RAM_READ; unsigned char* RAM_WRITE; }MEMORY_MAP; MEMORY_MAP slave_jednotka_1..... slave_jednotka_n
Při inicializaci struktury se vytvoří pole pomocí malloc:
slave_jednotka_n->RAM_READ = (unsigned char*)malloc(nsizeof(unsigned char));
slave_jednotka_n->RAM_WRITE = (unsigned char
)malloc(n*sizeof(unsigned char));

Při rušení struktury se musí pole zrušit pomocí free:
free(slave_jednotka_n->RAM_READ);
free(slave_jednotka_n->RAM_WRITE);

K prvkům pole se pak přistupuje jako k statickému poli:
slave_jednotka_n->RAM_READ*

Taková struktura pak může být součástí jiných struktur, velikost polí je modifikovatelná.

Jiná alternativa - spíš se tato problematika řeší jinak. Aby se nemusela pole alokovat (jednak manažer paměti spotřebovává pro bloky nějakou paměť navíc a jednak je s tím obtížná manipulace), tak se použijí větší pole, pro max. velikost, a ztracená paměť se oželí (jinak se s tím pracuje stejně, jako s menším polem, nevadí že má rezervu):

#define MAP_MAX 10 typedef struct{ unsigned char RAM_READ[MAP_MAX]; unsigned char RAM_WRITE[MAP_MAX]; }MEMORY_MAP; MEMORY_MAP slave_jednotka_1..... slave_jednotka_n *