数组过大程序不能正常运行

2019-07-21 00:22发布

本帖最后由 stm32我爱你 于 2016-1-8 15:19 编辑

u16 color_buf[1920];
u8 color_buf1[3840];
如上图所示,这两个数组是在子函数里定义的局部变量,程序开始能正常运行;如果把第一个数组的大小从1920改为2048,则程序会卡死在这个函数里面,谁知道这是什么原因吗?如果一定要定义一个2048甚至是4096大小的数组,应该怎么解决这个问题呢?谢谢各位了。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
jermy_z
1楼-- · 2019-07-21 01:24
 精彩回答 2  元偷偷看……
villy_yang
2楼-- · 2019-07-21 04:33
能不能把函数代码给全呢,这样看不出什么来
it_do_just
3楼-- · 2019-07-21 05:07
 精彩回答 2  元偷偷看……
stm32我爱你
4楼-- · 2019-07-21 06:14
jermy_z 发表于 2016-1-8 15:05
堆栈小了,把堆栈开大,或者放全局里

开大了
把       Heap_Size       EQU     0x00000200
修改为Heap_Size       EQU     0x00000400
就可以了
之前我记得也试过,不知道怎么就不行的,这次就可以了,奇怪。
另外想问一下,这个栈大小和程序的临时变量大小怎么对应呢?具体应该怎么算啊?
例如,我把数组大小再改大一点,变成1000 000 或其他数值,那么这个栈应该是多大呢?
谢谢了
jermy_z
5楼-- · 2019-07-21 06:42
stm32我爱你 发表于 2016-1-8 15:34
开大了
把       Heap_Size       EQU     0x00000200
修改为Heap_Size       EQU     0x00000400

自己思考去,别什么都想着伸手
stm32我爱你
6楼-- · 2019-07-21 08:45
 精彩回答 2  元偷偷看……

一周热门 更多>