nie znalazłem gotowej funkcji w gcc do odczytania wolnej / zajętej pamięci, więc próbowałem napisać własną - w tym problem jednak, że malloc(10000) radośnie działa, mimo, że proc ma 1kB ramu, sprawdzanie adresu też niewiele daje: w pętli alokuje po 100 bajtów mallokiem i za każdym razem sprawdzam, czy mogę do zaalokowanego adresu coś zapisać i czy przy odczycie się zgadza - tu też są kwiatki, bo bez problemu się alokują fragmenty pamięci o adresach trochę powyżej 1024, które w dodatku dają się zapisywać i odczytywać (przy wyjściu "troche dalej" pojawiają się krzaki na lcd)...
Czy jest może jakiś skuteczny sposób odczytania ilości wolnej pamięci w danym momencie działania programu?
EDIT:
przestudiowałem trochę dokładniej struktutę pamięci atmegi i okazało się, że adresowanie SRAM zaczyna się od 96, a na końcu pamięci jest zaalokowany stos - wszystko się zaczyna więc zgadzać... Napisałem program, który alokuje całą możliwą dostępną pamięć - wydaje się działać OK - wrzucam, może komuś się jeszcze przyda.
Polecam lekturę rozdziału AVR ATmega16 Memories -> SRAM Data Memory z datasheeta megi16 oraz using malloc() z manuala avr-libc
Czy jest może jakiś skuteczny sposób odczytania ilości wolnej pamięci w danym momencie działania programu?
EDIT:
przestudiowałem trochę dokładniej struktutę pamięci atmegi i okazało się, że adresowanie SRAM zaczyna się od 96, a na końcu pamięci jest zaalokowany stos - wszystko się zaczyna więc zgadzać... Napisałem program, który alokuje całą możliwą dostępną pamięć - wydaje się działać OK - wrzucam, może komuś się jeszcze przyda.
Polecam lekturę rozdziału AVR ATmega16 Memories -> SRAM Data Memory z datasheeta megi16 oraz using malloc() z manuala avr-libc