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