C++ #include ram probléma

Fórumok

https://github.com/earlephilhower/ESP8266Audio könyvtárat szeretném használni, de ez bootoláskor dől el hogy tényleg kell-e.

Ha csak #include "AudioFileSourceSPIFFS.h" van a kódban, semmi más, akkor is megeszik vagy 10kb ramot. Átnéztem de nem találom a bűnöst.

Egy extern boolt szeretnék beletenni, ha az false, felejtse el az egész projektet, de arra se jövök rá hogy hova tűnik a ram.

THX!

Hozzászólások

Ha linkeket, includeolod a header fájlt, a memória foglalás - nem dinamikus - megtörténik, Ha ez futamidejű bool opció, akkor nem Uszód meg. Nézd meg a forráskódját, mit foglal le (valami Time buffer lesz), csökkentsd a méretet vagy tedd dinamikusra. A lib vélhetően nem runtime függő include-ra készült. 8266 esetén talán nem fáj annyira 10kB

Van egy ilyenem:

#include <ESPFlashString.h>

uint8_t sg[55];        // setup uint8_t gpio (espflash)

ESPFlash<byte> sgf("/sg");
bool success_sg = sgf.getFrontElements(sg, sizeof(sg));

Ebből már a könyvtár tudhatja hogy van-e rá szükség. Hülyeséget írtam. Ötlet?

Szerk: vagy nem?

Hasonlo esetekben azt szoktam hogy a *.elf-re raengedek egy `nm main-akarmi.elf | sort` -ot es abbol ki lehet banyaszni hogy mik azok a statikus objektumok (nev szerint) amik megeszik a RAM-ot. 

Illetve forditsd -fdata-sections kapcsoloval + utana -Wl,--gc-sections modon linkeld. Akkor kiszedi azokat a statikus objektumokat amikre nincs hivatkozas.