मुझे पता चला कि जब हम nested functions का उपयोग करते हैं, तो जीसीसी को trampoline code के लिए निष्पादन योग्य स्टैक की आवश्यकता होती है। हालांकि, कोड के बाद, जीसीसी का उपयोग करके संकलित जब निष्पादन योग्य ढेर नहीं दिखाता है।लिनक्स में निष्पादन योग्य ढेर का उदाहरण (i386 आर्किटेक्चर)
#include <stdio.h>
#include <unistd.h>
int main()
{
int add(int a, int b)
{
return a + b;
}
return add(2, 3);
}
यह एक निष्पादन योग्य ढेर में परिणाम क्यों नहीं करता है (मैं अगर ढेर निष्पादन योग्य है सत्यापित करने के लिए execstack प्रयुक्त)? और यदि ऐसा नहीं माना जाता है, तो क्या कोई कोड निर्माण का उदाहरण दे सकता है जो निष्पादन योग्य ढेर देता है?
मुझे लगता है कि स्थानीय स्तर पर परिभाषित कार्यों निष्पादन ढेर की जरूरत नहीं है क्योंकि उनके कोड अभी भी नहीं अन्य कार्यों के रूप में एक ही कोड खंड में संग्रहीत है, और पर ढेर। –