Как в коде получить число X, которое выводит компилятор в своем сообщении: “Глобальные переменные используют X байт (**%) динамической памяти, оставляя …” ?
Прочитай скрипт линкера, посмотри как там зоны расположены, и посчитай в коде разницу между началом и концом зоны, где лежат глобальные переменные.
А можно узнать - зачем?
Это число - “сферический конь в вакууме” и от него очень далеко до оценки реального использования памяти в программе.
Чет сложно глубоко вникать. Методом тыка совпало с компилятором:
extern int __heap_start;
(int)&__heap_start - 256 // The Stack Pointer must be set to point above 0x0100 для моего проца
На себя только такой «тык» не направляй. Мало ли чё…
Компилятор показывает ТОЛЬКО Объем памяти, занятой пограммой и памяти под глобальные и статические переменные, которые будут размещены в ней до запуска программы. А вот с локальными переменными "тыкнуьтся " можно…
на форуме forum.arduino.cc был разбор полётов библиотеки ТС, там прямо сказали, указатель в этой конструкции нельзя, только ссылка, иначе память будет “течь”
..по теме:
нужно в своем коде написать:
extern int __bss_start, __bss_end;
ну или
extern “C“ int __bss_start, __bss_end;
И вычесть одно из другого. Это будет размер ваших RW глобальных переменных.