关于内存管理中内存池大小

2019-07-21 06:48发布

内存管理一章里 #define MEM1_MAX_SIZE 40*1024 //最大管理内存 40K
F1实际内存为64K,为什么不能写成#define MEM1_MAX_SIZE 64*1024


我试着改了下,出现错误No space in execution regions with .ANY selector matching startup_stm32f10x_hd.o(STACK).
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
来俩不甜的
1楼-- · 2019-07-21 10:43
因为别的地方也要使用这64k内存,你这样定义就一点都不给别人用了,别的地方定义的变量加起来就超过64k了,所以报错
十二翼
2楼-- · 2019-07-21 11:01
来俩不甜的 发表于 2017-5-4 15:16
因为别的地方也要使用这64k内存,你这样定义就一点都不给别人用了,别的地方定义的变量加起来就超过64k了, ...

恩,谢谢~
hmy
3楼-- · 2019-07-21 12:08
请问40K这个值是怎么算出来的
275891381
4楼-- · 2019-07-21 14:35
 精彩回答 2  元偷偷看……
JoeyZhang
5楼-- · 2019-07-21 20:08
275891381 发表于 2018-2-2 13:45
#define MALLOC_SIZE 30   //64kb      all=64kb      x*1024+x*1024/32*2=64kb*1024 最大x=60.235

x*1024+x*1024/32*2=64kb*1024 最大x=60.235
这个式子怎么来的
275891381
6楼-- · 2019-07-21 21:21
本帖最后由 275891381 于 2018-3-8 17:01 编辑
JoeyZhang 发表于 2018-3-8 16:03
x*1024+x*1024/32*2=64kb*1024 最大x=60.235
这个式子怎么来的

内存是 u8的  MEM_MAX_SIZE大小
内存表是u16 的 MEM_MAX_SIZE/MEM_BLOCK_SIZE大小  
MEM_BLOCK_SIZE=32
管理x内存 需要占用 内存+内存表大小=x+x/32*2

一周热门 更多>