system
#1
su arduino v1.0
#include "Arduino.h"
String pippo;
void setup()
{
Serial.begin(115200);
pippo=""; // cosi crasha!
//pippo=" "; //cosi non crasha!
}
void loop()
{
pippo=pippo+"1,";
Serial.println(pippo);
}
chi mi spiega il perchè??
thx
basta osservare la wstring.cpp:
String & String::operator = (const char *cstr)
{
if (cstr) copy(cstr, strlen(cstr));
else invalidate();
return *this;
}
nel tuo caso "" finisce puntato da &cstr, e if (cstr) credo ritorni false... quindi viene invalidato:
void String::invalidate(void)
{
if (buffer) free(buffer);
buffer = NULL;
capacity = len = 0;
}
come puoi vedere ora il buffer è NULL. Ora quando fai += credo che avvenga un casino della madonna. Se è così è un bug della libreria.