আপনি যদি উইন্ডোজ ব্যবহার করেন তবে কারণটি পিই কাঠামো।
আপনার heapভেরিয়েবলটি .dataফাইলের বিভাগে সঞ্চিত আছে এবং এই বিভাগের সূচনার ভিত্তিতে এর ঠিকানা গণনা করা হয়। প্রতিটি বিভাগ একটি ঠিকানাতে স্বাধীনভাবে লোড করা হয়, তবে এর সূচনা ঠিকানা পৃষ্ঠার আকারের একাধিক। আপনার অন্য কোনও ভেরিয়েবল না থাকায়, এর ঠিকানা সম্ভবত .dataবিভাগের শুরু , সুতরাং এর ঠিকানাটি আকারের একাধিক হবে।
উদাহরণস্বরূপ, এটি আপনার কোড কম্পাইল উইন্ডোজ সংস্করণের টেবিল:
বিভাগটি আপনার কম্পাইল কোড এবং করছিলেন আপনার ধারণ করে পরিবর্তনশীল। যখন আপনার পিই মেমরিতে লোড হয়, বিভাগগুলি বিভিন্ন ঠিকানায় লোড হয় এবং যা দ্বারা ফিরে আসে এবং পৃষ্ঠার আকারের একাধিক হবে। তবে প্রতিটি ভেরিয়েবলের ঠিকানা বিভাগের সূচনার সাথে সম্পর্কিত যা এখন পৃষ্ঠার আকার। সুতরাং আপনি সর্বদা কম সংখ্যায় একটি নির্দিষ্ট নম্বর দেখতে পাবেন। যেহেতু বিভাগের সূচনা থেকে আপেক্ষিক ঠিকানা সংকলক, সংকলন বিকল্প ইত্যাদির উপর ভিত্তি করে আপনি একই কোড থেকে ভিন্ন সংখ্যক দেখতে পাবেন তবে বিভিন্ন সংকলক, তবে প্রতিবার যা মুদ্রণ করা হবে তা স্থির করা হবে।
.text.dataheapVirtualAlloc()heap
যখন আমি কোডটি সংকলন করি তখন আমি লক্ষ্য করেছি heapযে বিভাগটি 0x8B0শুরু হওয়ার পরে বাইটে রাখা হয়েছে .data। সুতরাং যতবারই আমি এই কোডটি চালাই, আমার ঠিকানাটি শেষ হয় 0x8B0।