मैं कई structs अनुक्रमिक लेआउट है कि है:Marshal.SizeOf अतिरिक्त बाइट्स देता
struct S1
{
Guid id;
}
struct S2
{
Guid id;
short s;
}
struct S3
{
Guid id;
short s;
short t;
}
ऊपर struct प्रकार पर Marshal.SizeOf
कॉलिंग, मुझे मिल गया:
Size:
S1 = 16, as expected.
S2 = 20, copied an instance to a byte array, it only occupies first 18 bytes.
S3 = 20.
मेरा प्रश्न यही कारण है कि एस 2 का आकार 20 है लेकिन 18 नहीं। और यह समस्या तब होती है जब Guid
संरचना में है।
क्षमा करें msdn से कोई उपयोगी जानकारी नहीं मिल सकती है। मुझे पता है कि Marshal.SizeOf
मेमोरी में टाइप किए जाने वाले स्थान का आकार देता है, लेकिन मुझे यह जानना है कि आकार को 4 से अधिक बनाने के लिए 2 अतिरिक्त बाइट्स क्यों हैं।
और मैं इस "समस्या" से कैसे बच सकता हूं?
बहुत बहुत धन्यवाद!
संरचना मेमोरी लेआउट पर @ हंस पासेंट के बहुत गहन [उत्तर] (http://stackoverflow.com/a/3362736/1289454) पर एक नज़र डालें। उनका दावा है कि 'Marhsal.SizeOf' केवल एक guesstimate प्रदान कर सकते हैं। – gowansg