Получить размер глобальных переменных в RAM

Как в коде получить число X, которое выводит компилятор в своем сообщении: “Глобальные переменные используют X байт (**%) динамической памяти, оставляя …” ?

Прочитай скрипт линкера, посмотри как там зоны расположены, и посчитай в коде разницу между началом и концом зоны, где лежат глобальные переменные.

А можно узнать - зачем?
Это число - “сферический конь в вакууме” и от него очень далеко до оценки реального использования памяти в программе.

Чет сложно глубоко вникать. Методом тыка совпало с компилятором:

extern int __heap_start;
(int)&__heap_start - 256 // The Stack Pointer must be set to point above 0x0100 для моего проца

На себя только такой «тык» не направляй. Мало ли чё…

1 лайк

Компилятор показывает ТОЛЬКО Объем памяти, занятой пограммой и памяти под глобальные и статические переменные, которые будут размещены в ней до запуска программы. А вот с локальными переменными "тыкнуьтся " можно…

на форуме forum.arduino.cc был разбор полётов библиотеки ТС, там прямо сказали, указатель в этой конструкции нельзя, только ссылка, иначе память будет “течь”

..по теме:

нужно в своем коде написать:

extern int __bss_start, __bss_end;

ну или

extern “C“ int __bss_start, __bss_end;

И вычесть одно из другого. Это будет размер ваших RW глобальных переменных.