यदि आप Windows का उपयोग कर रहे हैं, तो इसका कारण PE संरचना है।
आपका heapचर .dataफ़ाइल के अनुभाग में संग्रहीत किया जाता है और इसका पता इस खंड की शुरुआत के आधार पर लगाया जाता है। प्रत्येक अनुभाग एक पते में स्वतंत्र रूप से लोड किया गया है, लेकिन इसका प्रारंभिक पता पृष्ठ आकार का एक से अधिक है। चूँकि आपके पास कोई अन्य चर नहीं है .data, इसलिए इसका पता संभवत: खंड का प्रारंभ है , इसलिए इसका पता कई आकार का होगा।
उदाहरण के लिए, यह आपके कोड के संकलित Windows संस्करण की मेज है:
खंड अपने संकलित कोड है और थे अपने शामिल चर। जब आपके पीई को मेमोरी में लोड किया जाता है, तो अनुभाग अलग-अलग पते में लोड किए जाते हैं और जो कि वापस आ जाता है और पृष्ठ आकार के कई हो जाएगा। लेकिन प्रत्येक चर का पता उस खंड की शुरुआत के सापेक्ष होता है जो अब एक पृष्ठ आकार है। इसलिए आपको हमेशा कम अंकों पर एक निश्चित संख्या दिखाई देगी। चूँकि अनुभाग के प्रारंभ से संबंधित पता संकलक, संकलन विकल्प, आदि पर आधारित है, इसलिए आपको एक ही कोड से अलग-अलग संख्याएँ दिखाई देंगी, लेकिन अलग-अलग संकलक, लेकिन हर बार जो छपेगा वह निश्चित है।
.text.dataheapVirtualAlloc()heap
जब मैं कोड संकलित करता हूं, तो मैंने देखा heapकि खंड की 0x8B0शुरुआत के बाद बाइट पर रखा गया है .data। इसलिए हर बार जब मैं इस कोड को चलाता हूं, तो मेरा पता समाप्त हो जाता है 0x8B0।