Распределение памяти — Ардуино

Я новичок в этом низком уровне. Сейчас изучаю ардуино. В настоящее время я использую Arduino Mega 2560, и в нашем курсе мы практикуем управление памятью. Я профессионал в управлении памятью на ПК, но почему-то у меня возникают сумасшедшие проблемы здесь, в Arduino. Например:

У Arduino есть 8192B, я пытаюсь переполнить его с помощью uint_16, поэтому я сделал массив 8192/16, который равен 512. Так что я сделал

uint16_t A[512+1];

Ну, я ожидал, что это вызовет переполнение.

Что не так с моей концепцией?


person Joey Arnold Andres    schedule 13.11.2012    source источник
comment
uint16_t имеет два байта, так зачем вам делить на 16?   -  person mkaes    schedule 13.11.2012
comment
Arduino имеет 8192B Вы имеете в виду 8192Bit или 8192Byte = 8KB?   -  person David J    schedule 13.11.2012
comment
да я просто побил рекорд глупости. Мне нужен сон.   -  person Joey Arnold Andres    schedule 13.11.2012


Ответы (2)


Вы, кажется, путаете свои биты с байтами.

Предполагая, что sizeof (uint16_t) равно 2 на Arduino, ваш массив из 513 16-битных целых чисел использует только 1026 байтов, что легко помещается.

person unwind    schedule 13.11.2012

Также в Arduino, когда память заполнена, вы не получаете никаких ошибок или предупреждений. Микроконтроллер просто перезагружается.

person Sudar    schedule 13.11.2012
comment
хорошо, я слежу за кучей и стеком. - person Joey Arnold Andres; 13.11.2012