Malloc issue
Hard Maker
hardmaker@gmail.com
Sat Feb 18 17:55:00 GMT 2012
Hi list,
I'm working with newlib in a cortex-m3 microcontroller (developing and
study how work), debugging a little aplicatino I found the malloc
assigments no depend of the type of data used. I'm not shure how explain
this in english, but with this code is more simple:
#include <stdio.h>
#include "kit.h"
#include "lcd_drv.h"
#include <malloc.h>
int main(int argc, char *argv[]){
char *m1;
short *m2;
int *m3;
float *m4;
long double *m5;
m1 = (char *)malloc(sizeof(char)); // 1 Byte
m2 = (short *)malloc(sizeof(short)); // 2 Byte
m3 = (int *)malloc(sizeof(int)); // 4 Bytes
m4 = (float *)malloc(sizeof(float)); // 4 Bytes
m5 = (long double *)malloc(sizeof(long double)); // 8 bytes
*m1=4;
*m2=4;
*m3=4;
*m4=4;
*m5=4;
while(1);
return 0;
}
All address assigned to m1, m2, m3, m4 and m5 pointers have 16 bytes of
distance. The values show in debugger after last malloc are:
m1 = 0x20005d90
m2 = 0x20005da0
m3 = 0x20005db0
m4 = 0x20005dc0
m5 = 0x20005dd0
My question is: Why all pointers have 16 bytes of distance if they point
to diferentes types of data? Searching about malloc aligment I found the
default value is 8, there are some relationship?
I'm using newlib version 1.19.0
thank's a lot.
Sergio
More information about the Newlib
mailing list