2015-07-21 2 views
7

मुझे पता है कि इस सी ++ वर्ग का एक उदाहरण: c| | | |i|i|i|i|s|s| | |वर्ग गुण/क्षेत्रों जमा हो जाती है कैसे

यह 4/2 पत्र एनोटेशन:

class A { 
    char c; 
    int iiii; 
    short ss; 
}; 

स्मृति में की इस तरह तरह दिखेगा कोई मतलब नहीं है (लेकिन मुझे लगता है कि मेरी बात स्पष्ट है)

1 byte for char, 3 bytes of padding, 4 bytes of int, 2 bytes for the short, और 2 bytes of tail padding (मंच निर्भर है, लेकिन यह तर्क नहीं बदलेगा)

सी ++ मानकों से

(संकलनकर्ता मेरे उदाहरण में फ़ील्ड्स का क्रम बदल नहीं होगा):

Nonstatic डेटा के सदस्यों एक (गैर-संघ) वर्ग उसी पहुंच के साथ नियंत्रण (क्लॉज 11) आवंटित किया जाता है ताकि बाद के सदस्यों के पास कक्षा ऑब्जेक्ट के भीतर पते हो। गैर-स्थैतिक के विभिन्न अभिगम नियंत्रण वाले डेटा सदस्यों को आवंटित करने का आदेश निर्दिष्ट नहीं है (खंड 11)। कार्यान्वयन संरेखण आवश्यकताओं के कारण दो निकट सदस्य एक दूसरे के तुरंत बाद आवंटित नहीं किए जा सकते हैं; तो वर्चुअल फ़ंक्शंस (10.3) और वर्चुअल बेस क्लासेस (10.1) के प्रबंधन के लिए स्थान की आवश्यकता हो सकती है।

इसलिए, मैं जानना चाहता हूं कि यह जावा कक्षाओं के लिए समान है, क्या संकलक पैडिंग को कम करने के लिए आदेश बदल सकता है?

+0

: http://stackoverflow.com/questions/16456366/why-does-the-size-of-a-class इसके बजाय, गुण निम्न क्रम में स्मृति में आयोजित कर रहे हैं ----द-द-द-द-द-द-सदस्य-घोषणा-और http://stackoverflow.com/questions/2006504/c-data-alignment-member-order-inheritance –

+1

जेवीएम विनिर्देश बताता है कि [* लगातार वस्तुओं को क्रमशः कक्षा फ़ाइल में संग्रहीत किया जाता है, बिना पैडिंग या संरेखण *] (https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html)। – Turing85

+1

@NO_NAME मुझे नहीं पता कि आपके लिए क्या समान साधन हैं, लेकिन यह मेरे लिए समान साधन नहीं है। क्या आपने मेरा प्रश्न पढ़ा? –

उत्तर

1

सबसे पहले What do Java objects look like in memory during run-time? और Know Thy Java Object Memory Layout पर एक नज़र डालें।

लेकिन मुझे लगता है कि Java Objects Memory Structure आपके प्रश्न का उत्तर दें।

कुछ स्मृति को बचाने के लिए, सूर्य वीएम ऑब्जेक्ट के गुणों को घोषित किए गए क्रम में नहीं रखता है।

doubles and longs 
ints and floats 
shorts and chars 
booleans and bytes 
references 
कुछ इसी तरह के सवाल
संबंधित मुद्दे

 संबंधित मुद्दे