#include "Arduino.h"
//#include <string>
#include <vector>
//#include <esp_system.h> //mem
using namespace std;
std::vector<String> v_audioContent;
//void vector_clear_and_shrink(deque<String>&vec);
void setup() {
Serial.begin(115200);
uint32_t ms = millis();
Serial.println("BEGIN------------------------");
mem();
for (uint8_t f=0;f<10;f++)
{
add();
while (v_audioContent.size() > 0) {
String s = v_audioContent[0];
// Serial.printf("%s\n", s);
v_audioContent.pop_back();
}
mem();
//if (v_audioContent.size() == 0)
if (v_audioContent.empty())
vector_clear_and_shrink(v_audioContent); // free memory
Serial.print("FOR------------------------:");
Serial.println(f);
}
Serial.println("END deque------------------------");
mem();
uint32_t ms2 = millis();
Serial.print("TIME:"); Serial.println((ms2 - ms) / 10);
}
void loop() {
delay(1000);
}
//-----------------------------ADD
void add() {
for (int n = 0; n < 1000; n++)
{
String nn = String(n);
v_audioContent.insert(v_audioContent.begin(),nn.c_str());
}
}
//-----------------------------FREE
void vector_clear_and_shrink(vector<String>&vec)
{
vec.clear();
vec.shrink_to_fit();
Serial.println("shrink-----------------------");
mem();
}
//-----------------------------MEM
void mem()
{
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.println(alloc);
}