#include <LinkedList.h>
#include "mString.h"
struct btn_t {
int x = -1;
int y = -1;
int w = -1;
int h = -1;
bool visible = false;
//mString<16> text; //text or .jpg
//mString<20> cmd;
String text; //text or .jpg
String cmd;
bool img = false;
bool isTouch = false;
};
LinkedList<btn_t> list_btn;
//SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
void setup() {
Serial.begin(115200);
Serial.print(F("mem free:"));
freeMemory();
time_t t = millis();
//Serial.println(t);
for (int n = 0; n < 3000; n++)
{
//btn_t BTN;
//BTN.x = 100;
//BTN.text = "N:" + String(n);
// list_btn.add(BTN);
list_btn.add(btn_t());
list_btn[n].x = random(100);
list_btn[n].y = random(100);
list_btn[n].text = "NNN:" + String(n);
}
Serial.print(F("mem ADD:"));
freeMemory();
/*
while (list_btn.size() != 0)
{
btn_t BTN = list_btn.pop();
// Serial.println(BTN.text);
}
*/
list_btn.clear();
Serial.print(F("mem END:"));
freeMemory();
// Serial.print(F("size:"));
// Serial.println(list_btn.size());
// Serial.println(millis());
Serial.print(F("Tm:"));
Serial.println(millis() - t);
}
void loop() {
}
void freeMemory() {
uint32_t freeHeapBytes = heap_caps_get_free_size(MALLOC_CAP_DEFAULT);
uint32_t totalHeapBytes = heap_caps_get_total_size(MALLOC_CAP_DEFAULT);
float percentageHeapFree = freeHeapBytes * 100.0f / (float)totalHeapBytes;
// Print to serial
// Serial.printf("[Memory] %.1f%% free - %d of %d bytes free\n", percentageHeapFree, freeHeapBytes, totalHeapBytes);
uint32_t Free = ESP.getFreeHeap();
uint32_t alloc = ESP.getMaxAllocHeap();
Serial.print("Free:"); Serial.print(Free);
Serial.print(" alloc:"); Serial.print(alloc);
Serial.print(" %:"); Serial.println(percentageHeapFree);
}