Hej...
Mam pytanie z programowania, C, już głupieję...
Chcę zrobić globalną tablicę z danymi bajtowymi. Każdy wiersz ma kilka pól oraz tablicę bajtową, różnej długości, od 4 bajtow do np. 100kB (teoretycznie). Musi być to zatem wskaźnik na dane, zeby kazda tablica bajtowa miala inna dlugosc.
Próbowałem zrobić tablicę wskaźników i przydzielać pamięć malloc-kiem (sądząc że to odpowiednik new linuxowego). Niestety, procek wywalał się z faultem przy 30 zaalokowanych zmiennych 4 bajtowych. uC ma 20kB SRAM-u, i tenze SRAM byl niemlaze caly pusty, no moze ze 2kB zajęte. Czyli zaalokowalem jakies 30*4 bajty, do tego obsługa, pewnie z 240 bajtów wyszło? Nie wiem dokładnie, nie pamiętam :/
W jaki sposób alokować pamięć dla takich danych? Powinno się rzeczywiście robić to mallockiem? Jeśli tak, to przygotuję testowy program i przedstawię wyniki jak procek pada ze szczegółami. Ale może robię jakiś błąd?
Generalnie co chcę osiągnąć:
1) Jest tablica globalna o której wspomniałem
2) jest sobie inna funkcja, która lokalnie przygotowuje dane, wywoluje funkcje "AddToArray" ze wskaznikiem na te dane i dane zostana permanetnie dopisane do tablicy. Funkcja konczy swoje dzialanie i zwalnia swoje lokalne zmienne.
3) Usuniecie danych z tablicy i zwolnienie pamieci dla danych tablocy powinno sie odbyc w kompletnie innym momencie przez inna funkcje.
Przepraszam za dlugi post, mam nadzieje ze w miare jasno wyklarowalem... Sadzilem ze to jakas banalna sprawa, pomijajc narzut dla malych danych - sadzilem ze malloc rozwiaze moj problem, a on takiego byka mi strzelal
Pzdr,
Damian
Mam pytanie z programowania, C, już głupieję...
Chcę zrobić globalną tablicę z danymi bajtowymi. Każdy wiersz ma kilka pól oraz tablicę bajtową, różnej długości, od 4 bajtow do np. 100kB (teoretycznie). Musi być to zatem wskaźnik na dane, zeby kazda tablica bajtowa miala inna dlugosc.
Próbowałem zrobić tablicę wskaźników i przydzielać pamięć malloc-kiem (sądząc że to odpowiednik new linuxowego). Niestety, procek wywalał się z faultem przy 30 zaalokowanych zmiennych 4 bajtowych. uC ma 20kB SRAM-u, i tenze SRAM byl niemlaze caly pusty, no moze ze 2kB zajęte. Czyli zaalokowalem jakies 30*4 bajty, do tego obsługa, pewnie z 240 bajtów wyszło? Nie wiem dokładnie, nie pamiętam :/
W jaki sposób alokować pamięć dla takich danych? Powinno się rzeczywiście robić to mallockiem? Jeśli tak, to przygotuję testowy program i przedstawię wyniki jak procek pada ze szczegółami. Ale może robię jakiś błąd?
Generalnie co chcę osiągnąć:
1) Jest tablica globalna o której wspomniałem
2) jest sobie inna funkcja, która lokalnie przygotowuje dane, wywoluje funkcje "AddToArray" ze wskaznikiem na te dane i dane zostana permanetnie dopisane do tablicy. Funkcja konczy swoje dzialanie i zwalnia swoje lokalne zmienne.
3) Usuniecie danych z tablicy i zwolnienie pamieci dla danych tablocy powinno sie odbyc w kompletnie innym momencie przez inna funkcje.
Przepraszam za dlugi post, mam nadzieje ze w miare jasno wyklarowalem... Sadzilem ze to jakas banalna sprawa, pomijajc narzut dla malych danych - sadzilem ze malloc rozwiaze moj problem, a on takiego byka mi strzelal

Pzdr,
Damian