如何为程序分配合适的栈空间?
分散加载文件中都有定义堆栈空间大小,堆空间一般由程序员使用malloc函数动态分配的,因此堆空间大小一般都会根据实际情况自行确定。栈是一块用于存储程序数据的内存区域,例如下述数据:
- 局部变量
- 返回地址
- 函数参数
- 编译器临时变量
- 中断时的上下文
在 IAR 中,可以开启栈使用分析让 IDE 在编译链接阶段就推算出这个程序的栈最大使用量。不过这种方法无法分析使用函数指针的方式调用的函数,也不能确定递归函数的嵌套次数。
编译后打开map文件,查看栈最大使用空间,然后修改对应分散加载文件的栈大小(要有一定的余量)。
MDK中,编译过后,用浏览器打开生成的htm文件,查看最大栈深度(优化等级不同栈深也可能不同)。
如何为程序分配合适的栈空间?相关推荐
- C语言内存分布图----栈空间、堆空间
内存布局:栈,堆,BSS段(静态区),代码段,数据段 什么是代码区.常量区.静态区(全局区).堆区.栈区? C/C++堆区.栈区.常量区.静态数据区.代码区详解 ------------------- ...
- g++ linux 编译开栈_使用g++编译器扩大程序可用栈空间
如题,在写一些程序的时候我们有时会开一个比较大的数组或进行层数较多的dfs.这时候,程序常常会报错,于是就很无奈. 其实,虽然Windows给程序的默认栈空间比较小,我们还是有办法去扩大这个程序运行栈 ...
- 【嵌入式】Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址
Ubuntu.stm32下的C程序中堆.栈.全局.局部等变量的分配地址 一.总体介绍 1.栈区(stack) 2.堆区(heap) 3.全局区(静态区) (1).bss段 (2).data段 4.常量 ...
- STM32对SD卡数据读取和在Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址的对比分析
一.SD卡协议原理 1.SD卡简介 SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小.数据传输速度快.可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机.平板电脑和多媒体 ...
- [转载] java虚拟机 jvm 出入java栈 栈空间内存分配
参考链接: Java虚拟机(JVM)堆栈区域 java栈空间是一块线程私有的内存空间,java堆和程序数据密切相关,那么java栈就是和线程执行密切相关.线程最基本的执行行为就是函数的调用.每次函数调 ...
- 栈空间_Linux中的进程栈和线程栈
1. 进程栈 进程栈是属于用户态栈,和进程虚拟地址空间 (Virtual Address Space) 密切相关.那我们先了解下什么是虚拟地址空间:在 32 位机器下,虚拟地址空间大小为 4G.这些虚 ...
- java:栈空间,堆空间,方法区
栈空间: 1. 栈是方法执行的内存模型,用栈存储方法执行的信息是再合适不过了.每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口等). 2. JVM为每一个线程创建一个栈,用于存放该线程执 ...
- 在代码段中安排自己定义的栈空间
如何定义自己的栈(通过系统分配的内存) 完成下面的程序,利用栈.将程序中定义的数据逆序存放. 我们之前是如何安排自己的栈? 设置SS:SP(SS为栈顶的段地址存放处,栈顶偏移地址存放在SP) 我们如何 ...
- 关于嵌入式系统内存地址空间的一些疑问(.text、.data、.bass、堆\栈空间)
深入浅出了解(.text..data..bss.堆空间.栈空间)的含义 接下来所说的是嵌入式系统的内存地址空间的布局,简单的说就是我们写好的代码,在编译过程种中,把代码里不同的变量.函数相应的保存在每 ...
最新文章
- linux查找技巧: find grep xargs linux系统信息查看大全
- 51nod 1414 冰雕 思路:暴力模拟题
- linux runqueue定义,linux – 了解rt_rq(实时runqueue)内核中数据成员的使用
- Mr.J-- HTTP学习笔记(四)-- 连接管理
- JavaWeb之Cookie
- Spring Session Redis
- mysql视图高峰事务_MySQL-视图与事务「程序员培养之路第二十六天」
- Redis设计与实现读后感
- Linux ubuntu 串口调试工具
- 研发部工作日志使用教程
- 什么是3d建模,3D建模师可以从事哪些职业?
- 台式电脑主板插线步骤图_图解台式电脑电源与主板对接安装详细过程。
- #2297. 战争调度(war)
- 如何删除“我的电脑”、“此电脑”中坚果云图标
- 鸿蒙天钟小白图片,果然又一令人震惊的取名方式-“小白”
- 2019年1月1日之后 你能少缴纳多少个税
- 评价神经网络性能的指标,神经网络是参数模型吗
- Boomzap一个虚拟游戏开发工作室的成功经验
- 微信提现免费额度领取,快来领取!我领取了738元
- 使用java开发spark实战
热门文章
- bzoj2154: Crash的数字表格
- Discovering Urban Functional Zones Using Latent Activity Trajectories TKDE 2015
- Jmail的邮件发送
- xunsearch: 开启后台服务,索引……随笔记录
- VMware Workstation三种网络连接模式说明(Bridged,NAT,Host-only networking)
- 实例——在编程过程中进行单元测试
- android平台TP调试无法正常使用问题
- 多个表关联的查询语句
- 使用Denyhost来阻止恶意连接SSH的IP
- linux下随机数字的生成