概述
背景:
近期一位朋友在调试时遇到了死机的情况,在查找后发现是一个局部变量数组过大造成的。将数组换成全局变量问题瞬间解决。局部变量过大导致死机是很多新手会犯的错误,下面我们就聊聊局部变量导致的死机问题。
根因分析:
要搞懂这个首先要搞懂全局变量与局部变量在RAM中的存储位置,看下图。
栈区:
1,存放函数的局部变量、参数、返回值。
堆区:
动态分配,malloc分配free释放
.bss:
1,未初始化或者初始化为0的全局变量;
2,未初始化或者初始化为0的静态变量;
.data:
1,初始化为非0的全局变量;
2,初始化为非0的静态变量;
以stm32f103c8为例看一下RAM、栈、堆大小。
RAM大小是0x5000,stack大小是0x400,heap大小是0x200。
全局区比stack、heap都要大。这就是为何局部变量会导致死机,改为全局变量就没事了。
最后
以上就是乐观大碗为你收集整理的聊聊局部变量导致的死机问题的全部内容,希望文章能够帮你解决聊聊局部变量导致的死机问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复