2010-06-05 150 views
1
  1. 我只是跨ANSI(ISO)就没有允许的功能嵌套.. 我想知道是什么让GNU C ITO实现这个功能(为什么这样有需要时)。如果函数say(a())在另一个函数say(b())中定义,那么 a()的生命周期将是整个程序?嵌套函数

  2. a()ll的存储是否将在分配给函数b()的堆栈中创建?

回答

1

1)非常主观。不是一个线索。 :-)

2)不,内部函数的生存期限制在外部函数的生命周期内。请参阅GCC documentation on nested functions。如果保留一个指向内部函数的指针并在外部函数返回后调用它,那么可能会发生坏事。

3)内部函数分配自己的堆栈空间,就像任何其他函数一样。它必须分配自己的空间以支持递归调用。

+0

2)不,内部函数的生命期限于外部函数的生命期,yeH但是那么内部函数的分配与外部函数的堆栈是一样的,以便当外部函数返回时那么整个堆栈框架被分配给外部函数被破坏,从而堆叠内部函数。 – Tarun 2010-06-05 12:47:21

+0

@ user359179:呵? – 2010-06-05 12:56:30

+0

hmmmmm什么是错的先生? – Tarun 2010-06-05 13:15:50