Code:
#include <functional>
typedef std::function<bool()> reqHandler;
reqHandler *l;
void setup() {
Serial.begin(115200);
Serial.printf("Start realloc lambda test ...\n");
l=(reqHandler *) malloc(2*sizeof(reqHandler)); // set 0
Serial.printf("start assigning 0 in set 0 l=%0x\n",l);
l[0]=[]()->bool{ Serial.printf("lambda 0\n"); };
l[1]=[]()->bool{ Serial.printf("lambda 1\n"); };
yield();
l=(reqHandler *) realloc(l,4*sizeof(reqHandler)); // set 1
Serial.printf("start assigning 2 in set 1 l=%0x\n",l);
l[2]=[]()->bool{ Serial.printf("lambda 2\n"); };
l[3]=[]()->bool{ Serial.printf("lambda 3\n"); };
yield();
l=(reqHandler *) realloc(l,6*sizeof(reqHandler)); // set 2
Serial.printf("start assigning 4 in set 2 l=%0x\n",l);
l[4]=[]()->bool{ Serial.printf("lambda 4\n"); }; // creates a crash
l[5]=[]()->bool{ Serial.printf("lambda 5\n"); };
yield();
Serial.printf("... End realloc lambda test.\n");
}
void loop() { }
Code:
realloc lambda test ...
start assigning 0 in set 0 l=3fff02a4
start assigning 2 in set 1 l=3fff02dc
start assigning 4 in set 2 l=3fff02dc
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v6000001c
Code:
#include <functional>
typedef struct dummylong{
long ldata[4];
} dl;
dl *l;
void setup() {
Serial.begin(115200);
Serial.printf("Start realloc non lambda test sizeof %d...\n",sizeof(dl));
l=(dl *) malloc(2*sizeof(dl)); // set 0
Serial.printf("start assigning 0 in set 0 l=%0x\n",l);
l[0].ldata[0]=123414234L;
l[1].ldata[0]=123414234L;
l=(dl *) realloc(l,4*sizeof(dl)); // set 1
Serial.printf("start assigning 2 in set 1 l=%0x\n",l);
l[2].ldata[0]=3478563478L;
l[3].ldata[0]=3465872463L;
l=(dl *) realloc(l,6*sizeof(dl)); // set 2
Serial.printf("start assigning 4 in set 2 l=%0x\n",l);
l[4].ldata[0]=3465873246L;
l[5].ldata[0]=356223478L;
Serial.printf("... End realloc non lambda test.\n");
}
void loop() { }
Code:
Start realloc non lambda test sizeof 16...
start assigning 0 in set 0 l=3fff0274
start assigning 2 in set 1 l=3fff0274
start assigning 4 in set 2 l=3fff0274
... End realloc non lambda test.
Statistics: Posted by itguru — Thu Oct 20, 2016 1:06 am
Statistics: Posted by Guest — Thu Oct 13, 2016 11:04 am
Statistics: Posted by itguru — Tue Oct 11, 2016 4:28 pm
Statistics: Posted by itguru — Tue Oct 11, 2016 4:22 pm
Statistics: Posted by Guest — Fri Sep 30, 2016 6:35 pm
Code:
#include <functional>
typedef std::function<void ()> reqHandler;
reqHandler *l;
void setup() {
Serial.begin(115200);
Serial.printf("Start realloc lambda test ...\n");
l=(reqHandler *) malloc(2*sizeof(reqHandler)); // set 0
Serial.printf("start assign 0 in set 0 l=%0x\n",l);
l[0]=[](){ Serial.printf("lambda 0\n"); };
l[1]=[](){ Serial.printf("lambda 1\n"); };
l=(reqHandler *) realloc(l,4*sizeof(reqHandler)); // set 1
Serial.printf("start assign 2 in set 1 l=%0x\n",l);
l[2]=[](){ Serial.printf("lambda 2\n"); };
l[3]=[](){ Serial.printf("lambda 3\n"); };
l=(reqHandler *) realloc(l,6*sizeof(reqHandler)); // set 2
Serial.printf("start assign 4 in set 2 l=%0x\n",l);
l[4]=[](){ Serial.printf("lambda 4\n"); }; // creates a crash
l[5]=[](){ Serial.printf("lambda 5\n"); };
Serial.printf("... End realloc lambda test.\n");
}
void loop() { }
Code:
Start realloc lambda test ...
start assign 0 in set 0 l=3fff086c
start assign 2 in set 1 l=3fff08a4
start assign 4 in set 2 l=3fff08a4
ets Jan 8 2013,rst cause:4, boot mode:(1,6)
wdt reset
Statistics: Posted by itguru — Sun Sep 25, 2016 4:35 pm