c - Storage allocation for a function -
जब मैं इस तरह एक फ़ंक्शन परिभाषित करता हूँ:
void foo (int a, int b ) {} - कब आवंटित भंडारण है?
- जहां यह भंडारण आवंटित है?
यदि आपका प्रश्न कुछ समान है "कंपाइलर के बाद क्या और कहाँ है यह फ़ंक्शन अपना काम किया ":
कंपाइलर इस परिभाषा को विधानसभा कोड में परिभाषित करता है, जिसे तब बाइनरी निष्पादन योग्य में अनुवाद किया जाता है। यह आपके स्मृति में नहीं है (इसलिए कोई "भंडारण आवंटन" नहीं है), यह कंपाइलर द्वारा निष्पादन योग्य फ़ाइल आउटपुट में है ( a.out यदि आप अपनी इनपुट फ़ाइल, या खिड़कियों पर .exe फ़ाइल से कोई अन्य तर्क के बिना लिनक्स पर जीसीसी कहते हैं।) संपादित करें: थोड़ी आगे, और अपने कार्य के बाद से दो तर्क घोषित करता है:
संकलक एक बाइनरी निष्पादन योग्य बनाता है, और यह वह जगह है जहां आपका फ़ंक्शन है अब, निष्पादन योग्य (जब निष्पादित) इन तर्कों (दो int s के लिए स्टैक पर कुछ बाइट्स) के लिए स्मृति आवंटित करेगा। दूसरे शब्दों में: अपने अंतिम निष्पादन योग्य , आपकी फ़ंक्शन परिभाषा सिर्फ उन निर्देशों का एक गुच्छा है जो आपके CPU निष्पादित कर सकती हैं। हालांकि, ये निर्देश दो तर्कों को संग्रहीत करने के लिए मेमोरी आवंटित करते हैं।
Comments
Post a Comment