Posiadam mikrokontroler z 32kB pamieci RAM. W ramach nauki alokuję 20000B pamięci co kończy się sukcesem i zapala się dioda zielona.
double * d = NULL;
d = (double*)malloc(20000);
if(d != NULL)
{
LED_OFF(BLUE);
LED_OFF(ORANGE);
LED_OFF(RED);
LED_ON(GREEN);
}
else
{
LED_OFF(BLUE);
LED_OFF(ORANGE);
LED_ON(RED);
LED_OFF(GREEN);
}
Przy próbie alokacji 40000 bajtów mikrokontroler się zawiesza i nie zapala się czerwona dioda, wydaje się to oczywiste. Czy istnieje jakiś mechanizm aby zapobiec takiej sytuacji? Wg mnie powinno być tak, że mcu nie zaalokuje w ogóle tego bloku pamięci, funkcja malloc zwróci NULL, zapali się czerwona dioda, i MCU będzie działał dalej. Dlaczego tak się nie dzieje? Potrzebny jest do tego OS?