内存管理的几个问题,先定义一个大数组,在用malloc给其他变量分配内存,会有地址重叠的情况吗?

2019-07-20 21:38发布

关于内存管理的问题,例如:已经先定义一个大数组 : u32 a[1024],然后再用内存管理给指针P分配2K内存 :p=mymalloc(sramx,2048);

请问:
1、数组a在RAM上的地址空间会出现与p的重叠吗?
2、p可以用myfree(sramx,p)释放内存,数组a[1024]能释放内存吗?
3、既然数组a是占用ram空间的,my_mem_perused(SRAMIN)是没有计算到数组a的占用的空间的?这样合理吗?

请大神指教!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-07-21 01:32
1,不会。2,不行。3,为什么不合理?
rawgan
2楼-- · 2019-07-21 03:22
数组a定义时,不是没有在内存管理表做标记吗;那用my_mem_perused(SRAMIN)计算的值就不包括数组a占用的内存啦。
rawgan
3楼-- · 2019-07-21 04:55
 精彩回答 2  元偷偷看……
冰封嗜魔
4楼-- · 2019-07-21 07:57
数组在栈里面,自上往下增长;内存管理在堆里面,自下往上增长。
rawgan
5楼-- · 2019-07-21 11:17
 精彩回答 2  元偷偷看……
冰封嗜魔
6楼-- · 2019-07-21 11:22
rawgan 发表于 2016-6-23 16:43
就是说当这两个占用的内存达到一度程度时,是会出现重叠交叉的情况咯?

很难,栈在启动文件里面已经定义大小了,一般不会超过1-2K。

一周热门 更多>