Hi, The test code is listed as below,
#pragma OT(0) void main (void) { DATA_MSG *b=NULL; DATA_MSG *a=NULL; b=(DATA_MSG *)malloc(sizeof(DATA_MSG)); b->sMsgHeader.MessageType=E_Battery_Status; b->sMsgHeader.Extended=1; //Plug_Status=0; //Varible_Init(); a=(DATA_MSG *)malloc(sizeof(DATA_MSG)); a->sMsgHeader.MessageType=E_Get_Country_Info; a->sMsgHeader.Extended=0; if(b->sMsgHeader.Extended || a->sMsgHeader.Extended) EX3=1; else EX3=0;
I use the keil-C simulator to debug it. I found the pointer a and b point to the same memory location. It means that the a overwrites b, I don't know why? Anyone knows it? Thanks a lot.
Yes, that's it.
Now you see that you have to define the size of the memory pool (aka "Heap") in advance.
So it really doesn't help you - does it?
You might just as well use the memory directly - and then you save the overheads!
And you avoid all the other risks associated with Dynamic Allocation!
RE: the '51 is NOT a PC are you the ghost of Erik Malund ... ?!
no, could not be, ghosts do not make sense