堆区设置大小、变量存储区域

2019-07-21 00:57发布

一个其他人写的项目文件,在其中的一个.c文件中定义了一个超大的数组,static float LaserPointArray[201][6] = {0};        这个数组变量属于静态变量        ,静态变量、全局变量是存储在堆区的。在启动文件中堆区的大小是定义好的。Heap_Size       EQU     0x00000200 这样算来堆区的大小明显不满足需要的空间大小。但是程序不报错,并且能运行。为什么这样?另外堆栈都是属于RAM的,而RAM的空间大小是可以看到的。如下图所示: 截图未命名.jpg ,具有65536个字节大小,因此在启动文件中将Heap_Size       EQU     0x00000200通过更改0x00000200数据的大小是不是就可以直接更改堆区大小。堆区+栈区是不是就是RAM的空间大小,还是说堆区+栈区<=RAM的空间大小。理解这个概念才可以知道手动更改堆区大小,最大可以更改为多大。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
流年丶
1楼-- · 2019-07-21 03:19
 精彩回答 2  元偷偷看……
zhangxiaolin
2楼-- · 2019-07-21 05:39
流年丶 发表于 2019-5-23 13:42
RAM分为堆区,栈区,静态区。通过malloc函数申请的内存是占用堆区大小,局部变量存储在栈区,静态变量和全 ...

如果内存溢出,MDK一般是不报警的,RAM的空间大小65536个字节减去起始文件中,堆区和栈区的大小,剩余的空间大小就是静态区的大小。可以这样理解吗?
流年丶
3楼-- · 2019-07-21 07:55
zhangxiaolin 发表于 2019-5-23 13:55
如果内存溢出,MDK一般是不报警的,RAM的空间大小65536个字节减去起始文件中,堆区和栈区的大小,剩余的 ...

可以这么理解。
正点原子
4楼-- · 2019-07-21 08:12
如果你没用C语言标准库的malloc和free函数,Heap_Size       定义成0就行了,节省内存。
zhangxiaolin
5楼-- · 2019-07-21 09:09
 精彩回答 2  元偷偷看……

一周热门 更多>