जब हमें किसी फ़ंक्शन का पता या उस मामले के लिए कोई ऑब्जेक्ट मिलता है, तो क्या यह उस ऑब्जेक्ट का आभासी पता या भौतिक पता है ??फ़ंक्शन पॉइंटर: भौतिक या आभासी पता
10
A
उत्तर
11
क्या आप सामान्य रूप से पॉइंटर्स के बारे में पूछ रहे हैं?
अधिकांश ऑपरेटिंग सिस्टम पर, वे तार्किक पते हैं।
ऑपरेटिंग सिस्टम वर्चुअल मेमोरी और पेजिंग तंत्र के माध्यम से उन्हें भौतिक पते में अनुवाद करने के लिए ज़िम्मेदार है। यह कार्यक्रम के लिए पारदर्शी है। यही कारण है कि एक गुमराह कार्यक्रम "सीमाओं को हिट करता है" और जीपीएफ।
कुछ पुराने सिस्टम (उदा।, डीओएस) पर, वे भौतिक होंगे, जिससे आप स्मृति के अन्य हिस्सों में सामान को ओवरराइट कर सकते हैं।
7
ओएस पर निर्भर करता है और आपका कोड किस स्तर पर चल रहा है।
एक आधुनिक ओएस पर एक सामान्य उपयोगकर्ता-भूमि कार्यक्रम के लिए, आपको वर्चुअल पता मिलेगा।
संबंधित मुद्दे
- 1. फ़ंक्शन पैरामीटर: कॉपी या पॉइंटर?
- 2. आभासी निर्देशिका भौतिक पथ कैसे प्राप्त करें
- 3. फ़ंक्शन पॉइंटर
- 4. फ़ंक्शन पॉइंटर
- 5. फ़ंक्शन पॉइंटर
- 6. फ़ंक्शन पॉइंटर
- 7. भौतिक पथ से आभासी पथ में कनवर्ट करें
- 8. लिनक्स 3/1 आभासी पता विभाजित
- 9. फ़ंक्शन पास पॉइंटर C++
- 10. पॉइंटर-टू-फ़ंक्शन
- 11. किसी ड्राइव को वर्चुअल या भौतिक
- 12. कास्टिंग सदस्य फ़ंक्शन पॉइंटर
- 13. लिनक्स (उबंटू), सी भाषा: शारीरिक पता का आभासी अनुवाद
- 14. फ़ंक्शन पॉइंटर बनाएं जो एक फ़ंक्शन पॉइंटर को
- 15. चेतावनी जब पॉइंटर और पॉइंटर-टू-फ़ंक्शन
- 16. फंक्शन पॉइंटर जो एक फ़ंक्शन पॉइंटर
- 17. सी फ़ंक्शन पॉइंटर अनुवाद?
- 18. सी # फ़ंक्शन पॉइंटर?
- 19. सी ++ फ़ंक्शन पॉइंटर पैरामीटर
- 20. भौतिक पथ से संबंधित आभासी पथ प्राप्त करना
- 21. एल्फ़ फाइलों में सेक्शन के आभासी और भौतिक पते
- 22. सी ++ आभासी फ़ंक्शन रिटर्न प्रकार
- 23. सी ++ सदस्य फ़ंक्शन पॉइंटर समस्या
- 24. सदस्य फ़ंक्शन के लिए फ़ंक्शन पॉइंटर
- 25. सी ++ आभासी फ़ंक्शन कॉल बनाम बूस्ट :: फ़ंक्शन कॉल speedwise
- 26. आभासी मशीनों
- 27. फ़ंक्शन पॉइंटर का पॉइंटर मान क्या दर्शाता है?
- 28. फ़ंक्शन पॉइंटर और कॉलिंग कन्वेंशन
- 29. फंक्शन पॉइंटर __attribute __ ((कॉन्स)) फ़ंक्शन?
- 30. एक फ़ंक्शन पॉइंटर पिन करें
लेकिन यदि मैं निम्नलिखित प्रोग्राम चलाता हूं: int main() {int (* p)(); पी = मुख्य; printf ("% p", p);} यह 0x80483c4 जैसे पते दे रहा है, ऐसा लगता है कि यह भौतिक पता है, इस तरह के बड़े पते पर मुख्य प्रारंभ का वर्चुअल पता क्यों होगा ?? मैं इसे linux.plz पर चला रहा हूं अगर मैं गलत हूं तो स्पष्ट करें ?? – mawia
आप गलत हैं। यह एक आभासी पता है। किसी ने भी नहीं कहा कि आपका मुख्य() फ़ंक्शन वर्चुअल एड्रेस 0 पर लोड हो जाता है। असल में, ईएलएफ बाइनरीज़ (लिनक्स में प्रयुक्त) में डिफ़ॉल्ट रूप से कोड सेगमेंट वर्चुअल एड्रेस 0x80482c0 पर शुरू होता है, जो ठीक से दिखता है (कुछ छुपे हुए सेट-अप हैं मुख्य से पहले कोड())। ध्यान रखें कि आभासी पता स्थान अक्सर गैर-संगत होता है, और आभासी पते केवल तभी आवंटित किए जाते हैं जब आप उनका उपयोग करते हैं। सिर्फ इसलिए कि आपका प्रोग्राम 0x80482c0 पर लोड किया गया है इसका मतलब यह नहीं है कि वहां और 0x0 के बीच की सभी चीज़ों को आवंटित कर दिया गया है। –
यदि आप लिनक्स के तहत स्मृति में अपना प्रोग्राम व्यवस्थित करने के बारे में वास्तव में रुचि रखते हैं, तो इसे पढ़ लें: http://www.linuxforums.org/articles/understanding-elf-using-readelf-and-objdump_125.html –