有X86的前提,不废话了,直接上测试代码主要部分~~~~
char *test_c1=(char *)malloc(Num);
*test_c1='h'; //'h'=0x68
*(test_c1+1)='o'; //'o'=0x6f
*(test_c1+2)='o';
*(test_c1+3)='o';
free(test_c1);
num=4
num=14
num=50
num=100
结果分析:
因为ARM Cortex-M3为32位的MCU,而且“堆栈指针的最低两位永远是0(硬件拉低),这意味着堆栈总是4字节对齐的”——ARM Cortex-M3权威指南P13,所以起码是0x04的整数倍~~~
所以按这样来说,4起码分配4,14起码分配4*4=16=0xf,50起码分配4*13=52=0x34,100起码分配4*25=100=0x64,但是结尾都以8结尾,这样会浪费一些字节,至于原因不得而知为啥子鸟~~~
ps:其实说是ARM篇有点不确切,应该是由MDK编译器来决定的~~~