This part is base on a copy of the original WString lib... ?
String( char*) > call init, then copy,
copy call reserve, call change buffer, that call realloc.
no malloc anywhere.
Strangely, it work until I use any short string... That what is strange.
in the sketch I provide, if you comment the first bloc with the 2 short string, the long string will print and is correctly allocated.