OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7236|回复: 7

F103无内存管理声明4k数据出错

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-10-9
在线时间
23 小时
发表于 2023-1-12 15:42:22 | 显示全部楼层 |阅读模式
15金钱
1,我当时没有学内存管理这一课。
2,内存管理占用了42k内存,导致我的程序超过了芯片的内存48k,报错。
3,我把内存管理删掉了,原因看第1点,编译后内存为6k,编译成功。
4,子函数里面声明了4k的buf,u8 buf[4096];
5,进入子函数会死机,改成buf[2048]即可正常运行。
问:为什么40k内存容不下我的4k数组,大佬说下有什么可能?(我用内存管理了,可以申请32k数组,但是我想知道为什么)

最佳答案

查看完整内容[请看2#楼]

在函数里面声明的4K属于局部变量,占用的是堆栈空间,需要修改下默认是堆栈大小
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2017-11-15
在线时间
11 小时
发表于 2023-1-12 15:42:23 | 显示全部楼层
在函数里面声明的4K属于局部变量,占用的是堆栈空间,需要修改下默认是堆栈大小
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-1-13 09:37:09 | 显示全部楼层
启动文件里面的栈空间不够大
回复

使用道具 举报

1

主题

73

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2019-1-1
在线时间
173 小时
发表于 2023-1-18 10:20:42 | 显示全部楼层
内存管理也是相当于申请了一个大数组,只不过它是让你申请释放都在这个数组里面进行,而你自己另外定义的数组跟内存管理的大数组是同样性质的,所以一样是占内存,程序中还有一些变量也会占用一定空间的,所以你定义的数组占的内存比较大就会死机
好好生活,快乐工作
回复

使用道具 举报

1

主题

73

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1299
金钱
1299
注册时间
2019-1-1
在线时间
173 小时
发表于 2023-1-18 10:22:01 | 显示全部楼层
简单来说,你都使用了内存管理,那你需要申请内存直接就malloc就行了,不要直接uint8_t buf[x],这时候你申请的多少字节的空间就直接在内存管理申请的那边内存进行获取
好好生活,快乐工作
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-10-9
在线时间
23 小时
 楼主| 发表于 2023-2-21 11:35:57 | 显示全部楼层
阿侑kevin 发表于 2023-1-13 09:37
启动文件里面的栈空间不够大

大佬,栈的空间是多大?定义是0x400=1024,是1K吗?网上有人说stm32是32位,栈大小应该是32/8*1024=4K。如果是1k,我应该连1k的数组也申请不了
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-2-22 11:01:52 | 显示全部楼层
gxy132667843 发表于 2023-2-21 11:35
大佬,栈的空间是多大?定义是0x400=1024,是1K吗?网上有人说stm32是32位,栈大小应该是32/8*1024=4K。 ...

哪个说32位要这么算的?都是以字节为单位
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-10-9
在线时间
23 小时
 楼主| 发表于 2023-2-24 09:28:21 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表