एक बफर आवंटन है new char[sizeof(T)]
के माध्यम से स्मृति जो ठीक से टाइप T
, जहां उनके प्राकृतिक, कार्यान्वयन परिभाषित है T
के सभी सदस्यों के लिए गठबंधन किया है आवंटित करने के लिए गारंटी, संरेखण (जो है, आप alignas
कीवर्ड उनके संरेखण संशोधित करने के लिए इस्तेमाल नहीं किया है) ।क्या नया चार वास्तव में कक्षा के प्रकार के लिए गठबंधन स्मृति की गारंटी देता है?
मैंने इस गारंटी को यहां कुछ उत्तरों में देखा है लेकिन मैं पूरी तरह से स्पष्ट नहीं हूं कि मानक इस गारंटी पर कैसे आता है। मानक के 5.3.4-10 बुनियादी आवश्यकता देता है: अनिवार्य रूप से new char[]
को max_align_t
पर गठबंधन किया जाना चाहिए।
जो मुझे याद आ रहा है वह बिट है जो alignof(T)
max_align_t
के अधिकतम मूल्य के साथ हमेशा वैध संरेखण होगा। मेरा मतलब है, यह स्पष्ट प्रतीत होता है, लेकिन संरचना के परिणामी संरेखण को max_align_t
पर होना चाहिए? यहां तक कि 3.11-3 बिंदु बताता है कि विस्तारित संरेखण समर्थित हो सकते हैं, तो क्या संकलक अपने स्वयं के वर्ग पर निर्णय ले सकता है एक अति-संरेखित प्रकार है?
अंत में, एक अच्छा सवाल है। क्या मैं कई बार गुच्छा कर सकता हूं? (क्लिक करें क्लिक करें) –
@ जॉन डीबलिंग: अपने आप से, नहीं, लेकिन सौभाग्य से हमारे पास एक गुच्छा है: डी –
कोई जवाब नहीं है, लेकिन क्या आप इसे सुरक्षित नहीं कर सकते हैं और 'नया टी'' का उपयोग नहीं कर सकते हैं और परिणाम डाला जा सकता है? ओह, और मुझे एक नया टैग सिखाने के लिए +1। मैंने भाषा-वकील के बारे में कभी नहीं सुना। –