Witam,
Potrzebuję zrobić strukturę w której będą wpisane jakieś dane "zdefiniowane" podczas kodzenia.
W uproszczeniu podam mój problem:
struct menu_t{
char text[];
/* ... */
};
/* program */
static struct menu_t menu = { .text="Ala ma kota" };
I program podczas działania się wysypuje, kompilator nie przydziela miejsca dla łańcucha tylko go "kopiuje" do obszaru który nie jest zarezerwowany. Przy najbliższym wskoczeniu do jakiejś funkcji, zawartość menu.text jest nadpisywana(przez adresy powrotu i tak dalej...)
Tworząc taki zapis na strukturze, kierowałem się tym:
int main(){ // programy z przedszkola ;)
char text[] = "Ala ma kota";
/* ... */
}
Tutaj jakoś kompilator rezerwuje pamięć dla tekstu, dlaczego tak nie jest z strukturą? Jak to rozwiązać?
Nie mogę z góry nałożyć długości w strukturze, jest ona rozbudowana i długości tekstów(oraz tablic do następnych struktur) jest bardzo różnorodna.