我发现当我们使用嵌套函数时,GCC 需要一个用于蹦床代码的可执行堆栈。但是,以下代码在使用 gcc 编译时不显示可执行堆栈。(我使用execstack来验证堆栈是否可执行)
#include <stdio.h>
#include <unistd.h>
int main()
{
int add( int a, int b)
{
return a + b;
}
return add(2, 3);
}
为什么这不会导致可执行堆栈?如果不应该这样做,那么有人可以举一个给出可执行堆栈的代码结构的例子吗?