We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm using the MCBx51 V2.1 prototype Board with the Keil uVision2 software, but I have some problems with memory allocation. This is the code that i had typed. p = malloc (1000); if (p == NULL) printf ("Not enough memory space\n"); else printf ("Memory allocated\n"); p[0] = 0x01; p[1] = 0x03; printf("%c",p[0]); printf("%c",p[1]); How come the output from the serial port is 0x0100 instead of 0x0103? Can anyone help me... Thanks...
Remember that malloc returns an "abstract" pointer - it's just an address with no type associated (void *) Therefore you should (in C++, must) cast its return value to a "real" type; eg,
p = (char*) malloc( 1000 );
printf( "%c", (char)p[0] ); printf( "%c", (char)p[1] );
See Problems when Porting C51 Code in Appendix F of the C251 manual.
int SIZE=1; p = (char*) malloc( SIZE ); if (p == NULL) printf ("Not enough memory space\n"); else printf ("Memory allocated\n"); This is a script that i wrote to check if there is any memory allocated for the variable 'p'. To my surprise, no matter what amount i decleare SIZE as, ranging from 1 to 1000, it keeps printing "Not enough memory space". What is the problem??
have you called the 'initmempool' (or whatever it's called) before calling malloc?