मान लिया जाये कि मैं निम्नलिखित की तरह एक struct है:क्या उपयोगकर्ता कोड द्वारा स्ट्रक्चर पैडिंग सुरक्षित रूप से उपयोग किया जा सकता है?
struct Struct {
char Char;
int Int;
};
और sizeof(int)
एक से अधिक है और संकलक Char
सदस्य चर के लिए गद्दी कहते हैं - संकलक उत्पन्न कोड पैडिंग बाइट्स के मूल्यों को बदलने की अनुमति है ?
अगर मैं सूचक अंकगणित का उपयोग करें और Char
सदस्य चर आसपास के पैडिंग बाइट्स में कुछ डेटा लिखने और बाद में variable.Char =
काम करना यह है कि संकलक द्वारा बनाया गया कोड भी पैडिंग बाइट्स के कुछ ऊपर लिख देगा संभव है मैं क्या मतलब है?
@nobugz, मुझे लगता है कि यह एक वैध सवाल है। छवियों को मानने से पहले आपने 0 को एक संरचना को याद किया है, आप दो संरचनाओं की तुलना करने के लिए बाद में memcmp का उपयोग कर सकते हैं, लेकिन केवल तभी जब संकलक पैडिंग बाइट को स्पर्श नहीं करता है। – quinmars
कक्षाओं और संरचनाओं के साथ पैडिंग, 'मेमसेट' या 'memcpy' के साथ गड़बड़ न करें। ** सुरक्षित ** और ** अधिक मजबूत ** दृष्टिकोण पैक किए गए बफर से पढ़ने और लिखने के तरीकों को लागू करना है (उदा। 'हस्ताक्षरित char [] ')। बीमा अतिरिक्त निष्पादन योग्य स्थान और समय के लायक है। –
@ थॉमस मैथ्यूज, मुझे लगता है कि आपने मुझे गलत समझा। मैं दो संरचनाओं की तुलना करने के बारे में बात कर रहा था, http://stackoverflow.com/questions/141720/how-do-you-compare-structs-for-equality-in-c/141791#141791 – quinmars