关于嵌入式程序中malloc和free函数的问题。

在单片机程序中,如果系统进入一个函数,那么堆栈指针SP会增加,增加的数量取决形参和函数中申请的局部变量。也就是说系统要把形参和动态变量压入堆栈。如果这个时候用malloc... 在单片机程序中,如果系统进入一个函数,那么堆栈指针SP会增加,增加的数量取决形参和函数中申请的局部变量。也就是说系统要把形参和动态变量压入堆栈。如果这个时候用malloc函数再申请一段空间,那SP指针是不是还要相应的增加?

在函数执行完之前是不是要free掉申请的空间?因为系统跳出函数需要将局部变量和形参弹栈,为了不影响对局部变量和形参的弹栈,是不是必须在系统跳出函数之前弹栈?
不知道我有没有表达清楚,或者我的表达中有没有什么问题。
兄弟C语言学的比较业余,各位看官轻拍。。。
展开
 我来答
kevin_sxw
推荐于2016-03-23 · TA获得超过165个赞
知道小有建树答主
回答量:80
采纳率:0%
帮助的人:36.1万
展开全部
  1. 系统的内存空间分为堆空间和栈空间。

  2. 如你所说的,进入一个函数之间形参和局部变量都是有栈空间分配,SP指针会相应增加

  3. 但是对于由malloc动态分配的内存是在堆中分配,并不是你所说的也是从栈中分配,所以用malloc分配内存并不会影响SP。

  4. malloc申请的空间必须有free进行释放,在函数内申请的空间不一定需要在函数推出前释放,只要头指针没有丢失函数返回后再释放也是可以的

综上所述,你主要是把堆和栈搞混淆了,malloc申请的空间是从堆中分配,并不是栈

网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式