标题: 关于C语言函数资源自动释放的问题 [打印本页]

作者: PDDDF    时间: 2019-12-18 17:22
标题: 关于C语言函数资源自动释放的问题
栗子:
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两个函数占用的资源有没有被释放,有的话哪个被释放了,网上说的不清不楚,求大神解答

作者: SroneBridge    时间: 2019-12-18 21:47
都没有,GKD执行完后将返回key_process。key_process执行完后又返回main。
作者: csmyldl    时间: 2019-12-18 21:55
这里所讲的资源主要是指内存资源,内存资源的释放主要看它的作用域,作用域只在子函数区域,其子函数执行结束就释放,但定义变量又分局部和全局,静态和动态,会不会释放看定义的方式,如果所有函数中的变量均是动态方式定义的,key_process和main两个函数占用的资源都会被释放。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1