हां, यह समस्याग्रस्त है। आपको बस कोई गारंटी नहीं है कि स्मृति ठीक तरह से गठबंधन है।
उचित संरेखण के साथ भंडारण प्राप्त करने के लिए विभिन्न युक्तियां मौजूद हैं, तो आप बूस्ट या सी ++ 0x के aligned_storage
का उपयोग करके सबसे अच्छे हैं, जो इन युक्तियों को आपके से छिपाते हैं।
तो फिर तुम बस जरूरत है:
// C++0x
typedef std::aligned_storage<sizeof(my_class),
alignof(my_class)>::type storage_type;
// Boost
typedef boost::aligned_storage<sizeof(my_class),
boost::alignment_of<my_class>::value>::type storage_type;
storage_type storage; // properly aligned
new (&storage) my_class(); // okay
ध्यान दें कि C++ 0x में, विशेषताओं का उपयोग, तो आप सिर्फ यह कर सकते हैं:
char storage [[align(my_class)]] [sizeof(my_class)];
मेरे लिए, यह ठीक है। –
नहीं, उस संदर्भ में लंबवत कानूनी नहीं हैं ... (संकेत: अगर आप पूछना चाहते हैं कि कोड अच्छी तरह से परिभाषित है, तो इसे पहले संकलित करना होगा।) – GManNickG
कोई भी मुझे बताएं कि उपर्युक्त चीज़ का उपयोग क्या है असली पोग्रामिंग दुनिया में। – vrbilgi