मैं निम्नलिखित सी कोड के बारे में एक प्रश्न है:स्थानीय चर के लिए आवंटित स्टैक स्पेस कब होता है?
void my_function()
{
int i1;
int j1;
// Do something...
if (check_something())
{
int i2;
int j2;
// Do something else...
}
// Do some more stuff...
}
वहाँ जब ढेर अंतरिक्ष आवंटित किया जाता है/i2 के लिए पुनः आवंटित की जाती है और J2 या यह संकलक पर निर्भर करता है के बारे में कोई गारंटी देता है? मैं उम्मीद करता हूं कि स्टैक पॉइंटर को समायोजित किया जाएगा जब i2 और j2 गुंजाइश में आते हैं और जब वे दायरे से बाहर निकलते हैं तो बैक अप समायोजित होते हैं, लेकिन फिर सोचा जाता है कि कुछ कंपाइलर्स पूरी चीज को "ऑप्टिमाइज़" कर सकते हैं और नेस्टेड स्कोप में चर के लिए खाता कर सकते हैं समारोह पहले दर्ज किया गया है।
मुझे पता है कि मैं अपने कंपाइलर द्वारा उत्पन्न असेंबली कोड देख सकता हूं, लेकिन यह सोच रहा था कि कार्यान्वयन को कंपाइलर तक छोड़ा जा सकता है या नहीं।
धन्यवाद!
यह भी मान लें कि चर के लिए चर आवंटित किए जा सकते हैं ... – unwind