#include "Arduino.h"
#include <queue>
std::queue<char*> v_audioContent;
using namespace std;
void vector_clear_and_shrink(queue<char*>&vec);
uint32_t Free;
uint32_t alloc;
void setup() {
Serial.begin(115200);
uint32_t ms=millis();
Free = ESP.getFreeHeap();
alloc = ESP.getMaxAllocHeap();
Serial.println("BEGIN------------------------");
Serial.print("Free");Serial.println(Free);
Serial.print("alloc");Serial.println(alloc);
add();
Free = ESP.getFreeHeap();
alloc = ESP.getMaxAllocHeap();
Serial.println("ADD------------------------");
Serial.print("Free");Serial.println(Free);
Serial.print("alloc");Serial.println(alloc);
while(!v_audioContent.empty()){
// const char* s = (const char*)v_audioContent[v_audioContent.size() -1];
const char* s = (const char*)v_audioContent.front();
// Serial.printf("playing %s\n", s);
v_audioContent.pop();
}
if(v_audioContent.size() == 0)
vector_clear_and_shrink(v_audioContent); // free memory
Free = ESP.getFreeHeap();
alloc = ESP.getMaxAllocHeap();
Serial.println("END-queue-----------------------");
Serial.print("Free");Serial.println(Free);
Serial.print("alloc");Serial.println(alloc);
uint32_t ms2=millis();
Serial.print("TIME:");Serial.println((ms2-ms));
}
void loop(){
delay(1000);
}
void add(){
//v_audioContent.insert(v_audioContent.begin(), strdup(file.path()));
String s="1111Привет 1234ж;";
//v_audioContent.insert(v_audioContent.begin(), strdup(s));
v_audioContent.push(strdup(s.c_str()));
const char* c="2222Привет 1234ж;2";
v_audioContent.push( strdup(c));
c="33Привет 1234ж;33";
v_audioContent.push( strdup(c));
for(int n=0;n<5000;n++)
{
String nn=String(n);
v_audioContent.push( strdup(nn.c_str()));
}
}
void vector_clear_and_shrink(queue<char*>&vec)
{
/*
uint size = vec.size();
for (int i = 0; i < size; i++) {
if(vec[i]){
free(vec[i]);
vec[i] = NULL;
}
}
vec.clear();
vec.shrink_to_fit();
*/
}