"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ ऑब्जेक्ट के लिए मेमोरी कैसे व्यवस्थित की जाती है?

C++ ऑब्जेक्ट के लिए मेमोरी कैसे व्यवस्थित की जाती है?

2024-11-09 को प्रकाशित
ब्राउज़ करें:972

How is Memory Organized for C   Objects?

सी ऑब्जेक्ट्स का मेमोरी लेआउट

डायनेमिक कास्ट और पुनर्व्याख्या संचालन में अक्सर ऑब्जेक्ट मेमोरी पॉइंटर्स में हेरफेर करना शामिल होता है। आइए इन परिचालनों को बेहतर ढंग से समझने के लिए सी कैसे मेमोरी में वस्तुओं को व्यवस्थित करता है, इस पर गौर करें। समान एक्सेस विनिर्देशक वाले सदस्यों को उनके घोषित अनुक्रम में क्रमबद्ध किया जाता है।

बेस क्लास सबऑब्जेक्ट्स

पैडिंग और संरेखण आवश्यकताएं

    वास्तविक मेमोरी लेआउट कार्यान्वयन-निर्भर है, लेकिन कई कंपाइलर इटेनियम एबीआई विनिर्देश का पालन करते हैं। यह एबीआई ऑब्जेक्ट मेमोरी लेआउट का एक विस्तृत विवरण प्रदान करता है, जिसमें वर्चुअल फ़ंक्शन टेबल, बेस क्लास और सदस्य चर का क्रम शामिल है।
  • मेमोरी लेआउट डेमो
  • क्लैंग का उपयोग करना , हम एक जटिल वर्ग के मेमोरी लेआउट की कल्पना कर सकते हैं:

वर्ग वर्ग { // ... };

clang -cc1 -fdump-record-layouts लेआउट.cpp

आउटपुट:
class Class {
    // ...
};
0 | क्लास क्लास 0 | कक्षा SBase1 (प्राथमिक आधार) 0 | (SBase1 vtable सूचक) 8 | इंट क 16 | कक्षा SBase2 (आधार) 16 | (SBase2 vtable सूचक) 24 | इंट क 28 | कक्षा SBase3 (आधार) 28 | इंट क 32 | पूर्णांक मैं 36 | चार सी 40 | फ्लोट एफ 48 | डबल डी 56 | लघु एस 64 | कक्षा VBase (आभासी आधार) 64 | (VBase vtable सूचक) 72 | इंट जे | [आकार = 80, आकार = 76, संरेखित = 8 | nvsize=58, nvalign=8]
clang -cc1 -fdump-record-layouts layout.cpp

मेमोरी को समझकर ऑब्जेक्ट का लेआउट, आप यह जानकारी प्राप्त कर सकते हैं कि डायनामिक कास्ट और पुनर्व्याख्या संचालन कैसे काम करते हैं और ऑब्जेक्ट पॉइंटर्स में हेरफेर करते समय सूचित निर्णय लेते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3