关于free如何知道要释放内存空间的长度问题(ARM篇)
2012-12-30 15:06
429 查看
有X86的前提,不废话了,直接上测试代码主要部分~~~~
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编译器来决定的~~~
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编译器来决定的~~~
相关文章推荐
- 关于free如何知道要释放多少内存空间长度的问题
- 关于free如何知道要释放内存空间的长度问题
- 关于free如何知道要释放内存空间的长度问题(X86篇)
- free如何知道释放内存长度:vs与glibc分配内存时编译器内部处理
- 关于库函数里申请的内存空间在库函数外释放的问题的一些总结
- 关于Java Logger类的使用问题 - 内存不释放
- 关于malloc函数后free内存空间的疑问
- 有关于malloc申请内存和free内存释放
- 关于指针变量所占内存空间大小的问题
- 面试中关于C++中的类,结构体,enum,字符变量等所占内存空间问题总结
- 关于如何获取NSString的中英文混合字符长度问题
- 关于Cross-Dll问题(在不同的模块之间申请和释放内存)
- 一个关于AVPlayer蛋疼的释放问题(iOS 9.0 AVPlayer的使用与内存的释放问题)
- C语言中free函数如何确定释放的空间大小
- 关于在dll中申请内存,外部释放的问题
- 关于rm删除文件空间不释放的问题
- 关于在dll中申请内存,外部释放的问题
- 关于C/C++动态申请空间释放和内存泄漏问题介绍
- free() 是如何释放不同内存区块大小的指针?
- 关于QTableWidget的item所占内存的释放问题