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

Ahoj, mám jeden pro mě zapeklitý problém se strukturama. Rád bych vytvořil strukturu podobnou příkladu:

typedef struct{
  unsigned char RAM_READ[pocet_1];       
  unsigned char RAM_WRITE[pocet_2];
  }MEMORY_MAP; 
MEMORY_MAP slave_jednotka_1..... slave_jednotka_n 

Ale chtěl bych, aby kazda promena slave_jednotka_x mela jiny pocet_1 nebo pocet_2. Řekněme, že by tato struktura byla v jine struktuře a ta by definovala jak velká budou tato pole. Je něco takového v céčku možné, nebo je to pitomost? Díky za radu

:arrow_right: administrator: přesunuto z "Ostatní"

:arrow_right: administrator: přejmenováno z "Struktury v Cčku"

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 *