स्टैक का व्यवहार (बड़ा होना या बढ़ना) आवेदन बाइनरी इंटरफेस (एबीआई) और कॉल स्टैक (उर्फ सक्रियण रिकॉर्ड) पर निर्भर करता है।
अपने पूरे जीवनकाल में एक कार्यक्रम ओएस जैसे अन्य कार्यक्रमों के साथ संवाद करने के लिए बाध्य है। एबीआई निर्धारित करता है कि एक कार्यक्रम दूसरे कार्यक्रम के साथ कैसे संवाद कर सकता है।
विभिन्न आर्किटेक्चर के लिए स्टैक दोनों तरह से विकसित हो सकता है, लेकिन एक आर्किटेक्चर के लिए यह सुसंगत होगा। कृपया इस विकी लिंक की जाँच करें । लेकिन, स्टैक की वृद्धि उस वास्तुकला के एबीआई द्वारा तय की जाती है।
उदाहरण के लिए, यदि आप MIPS ABI लेते हैं, तो कॉल स्टैक को नीचे के रूप में परिभाषित किया गया है।
आइए उस फ़ंक्शन को 'fn1' कॉल 'fn2' पर विचार करें। अब 'fn2' द्वारा देखा गया स्टैक फ्रेम निम्नानुसार है:
direction of | |
growth of +---------------------------------+
stack | Parameters passed by fn1(caller)|
from higher addr.| |
to lower addr. | Direction of growth is opposite |
| | to direction of stack growth |
| +---------------------------------+ <-- SP on entry to fn2
| | Return address from fn2(callee) |
V +---------------------------------+
| Callee saved registers being |
| used in the callee function |
+---------------------------------+
| Local variables of fn2 |
|(Direction of growth of frame is |
| same as direction of growth of |
| stack) |
+---------------------------------+
| Arguments to functions called |
| by fn2 |
+---------------------------------+ <- Current SP after stack
frame is allocated
अब आप देख सकते हैं कि ढेर नीचे की ओर बढ़ता है। इसलिए, यदि चर फ़ंक्शन के स्थानीय फ्रेम में आवंटित किए जाते हैं, तो चर के पते वास्तव में नीचे की ओर बढ़ते हैं। संकलनकर्ता मेमोरी आवंटन के लिए चर के आदेश पर निर्णय ले सकता है। (आपके मामले में यह या तो 'q' या 's' हो सकता है जो पहले स्टैक मेमोरी को आवंटित किया गया है। लेकिन, आमतौर पर कंपाइलर वेरिएबल की घोषणा के आदेश के अनुसार मेमोरी एलोकेशन को स्टैक करता है)।
लेकिन सरणियों के मामले में, आवंटन में केवल एकल सूचक होता है और आवंटित की जाने वाली मेमोरी को वास्तव में एकल सूचक द्वारा इंगित किया जाएगा। स्मृति को किसी सरणी के लिए सन्निहित होना चाहिए। तो, हालांकि ढेर नीचे की ओर बढ़ता है, सरणियों के लिए ढेर बढ़ता है।