函数的大小计算

本文介绍两种方法来计算函数在代码段中所占空间的大小:一是通过解析.map文件获取函数的起始与结束地址;二是利用相邻函数之间的指针差来自适应地计算函数大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何计算一个函数在代码段里面占用的空间大小?

 

在需要将函数从flash搬移到Ram里面运行时会有这个问题:开辟出多大的空间才是与之匹配的呢?

 

问题的关键就是在flash上面找到这个函数的开始和结束的地方,计算其大小即可。

具体大小是要在编译器编译结束之后才能知道的,那么如何在编译生成的代码里面准确计算一个函数的代码大小呢?

1. 通过检索编译之后生成的.map文件得到函数代码大小。每个代码在编译之后都会生成相应代码然后再被链接器链接在一起,这样在.map文件里面都会生成每个函数的起始和结束地址以及其大小。这种方法的好处就是已知其大小,可以直接开一个固定的ram空间。缺点就是每次函数修改之后,这个ram空间大小有可能会需要做相应的调整。

2. 一般而言,编译器会将一个文件里面相邻的函数连续的放在一起,那么可以通过在函数的后面增加一个空的函数,通过计算这两个相邻函数的指针差而得到函数的大小。好处就是在程序里面可以很方便的就得到函数大小,是自适应的,不像上面的方法还得先编译才行。缺点就是编译完了后要去检查一下,这2个函数是否真的被链接在一起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值