Because i loose Heap in my function, cant delete char ret before return value !
char* strToChar(String s) {
checkFreeHeap("strToChar",true);
unsigned int bufSize = s.length() + 1; //String length + null terminator
char* ret = new char[bufSize];
s.toCharArray(ret, bufSize);
//Serial.print("<" + String(ret) + ">");
checkFreeHeap("strToChar",false);
return ret;
}
This one is more clean but, does not return value ? cant understand why !
char* strToChar(String s) {
checkFreeHeap("strToChar",true);
unsigned int b = s.length() + 1;
char *ret;
ret = (char*)s.c_str();
//Serial.print("<" + String(ret) + ">");
checkFreeHeap("strToChar",false);
return ret;
}tools to read heap :
int old_getFreeHeap = ESP.getFreeHeap();
int new_getFreeHeap = ESP.getFreeHeap();
int *p_old_getFreeHeap = &old_getFreeHeap;
int *p_new_getFreeHeap = &new_getFreeHeap;
void checkFreeHeap(String f,bool m){
char *e;
if (m){ e = "AVANT";} else { e = "APRES";}
*p_new_getFreeHeap = ESP.getFreeHeap();
if (new_getFreeHeap != old_getFreeHeap ){
Serial.print("----- ERREUR ---- | Mémoire en baisse ! | ");
Serial.print(e);
Serial.print(" Libre: ");
Serial.print(new_getFreeHeap);
Serial.print(" Fonction: ");
Serial.print(f);
Serial.print(" | Taille ");
Serial.println(old_getFreeHeap - new_getFreeHeap);
}
old_getFreeHeap = new_getFreeHeap;
}
Thanks for help
Windows 10
Arduino IDE 1.6.13
ESP8266 2.3-RC-2 + git ESP8266 core