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

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 09:38
stm32我爱你 发表于 2016-1-8 15:49
自己找答案没问题,我也不想什么都拿现成的,只是不知道应该从哪里来找答案,或者说从哪些相关资料上可以 ...

www.baidu.com
stm32我爱你
2楼-- · 2019-07-21 12:08
jermy_z 发表于 2016-1-8 15:56
www.baidu.com

哈哈  哥 你这是逗我吗   百度都没找过  会上到原子哥这里来找答案吗   
真是服了你了
还望高手指点啊    各位大神  快点出来吧
jermy_z
3楼-- · 2019-07-21 16:09
 精彩回答 2  元偷偷看……
小温
4楼-- · 2019-07-21 22:04
你为什么要在函数内部开这么大的buff?有外扩SRAM吗?没有的话,无论在全局还是局部,SRAM较少的MCU都不建议开这么大的buff,(除非你任务少而且只是玩玩而已),至于把更改堆和栈的大小,呵呵,不建议这样做
ofourme
5楼-- · 2019-07-22 02:22
 精彩回答 2  元偷偷看……
ofourme
6楼-- · 2019-07-22 05:00
临时局部变量和程序返回地址等都存放在栈里面。当然,少量的局部变量,编译器会将其存放在寄存器上。

一周热门 更多>