找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1189|回复: 2
打印 上一主题 下一主题
收起左侧

关于C语言函数资源自动释放的问题

[复制链接]
跳转到指定楼层
楼主
ID:601478 发表于 2019-12-18 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
栗子:
void (*G)();

void main(void)
{
   G = &GKD;
   while(1)
   {
     key_process();
     DelayMs(5);
    }
}

void key_process()
{
  if(AN == 0)
  {
     DelayMs(2);
     if(AN == 0)
     {
       (*G)();
      }
   }
}

void GKD()
{
  .....        
}


问题:main中调用了key_process,key_process用指针调用了GKD,当按键按下CPU跳去执行GKD时,key_process和main两个函数占用的资源有没有被释放,有的话哪个被释放了,网上说的不清不楚,求大神解答
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:396245 发表于 2019-12-18 21:47 | 只看该作者
都没有,GKD执行完后将返回key_process。key_process执行完后又返回main。
回复

使用道具 举报

板凳
ID:235200 发表于 2019-12-18 21:55 | 只看该作者
这里所讲的资源主要是指内存资源,内存资源的释放主要看它的作用域,作用域只在子函数区域,其子函数执行结束就释放,但定义变量又分局部和全局,静态和动态,会不会释放看定义的方式,如果所有函数中的变量均是动态方式定义的,key_process和main两个函数占用的资源都会被释放。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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