Пример исполняемого стека в Linux (архитектура i386)

Я обнаружил, что когда мы используем вложенные функции, GCC требует исполняемый стек для кода батута. Однако следующий код при компиляции с использованием gcc не показывает исполняемый стек.(Я использовал execstack, чтобы проверить, является ли стек исполняемым)

#include 
#include 

int main()
{
        int add( int a, int b)
        {
                return a + b;
        }
        return add(2, 3);
}

Почему это не приводит к исполняемому стеку?И если это не предполагается, то может кто-нибудь приведите пример конструкции кода, которая дает лиисполняемый стек?

7
задан gjain 12 May 2012 в 13:55
поделиться