का आवंटन लक्ष्य मैं TR1 अतिरिक्त के आसपास अपना सिर प्राप्त करने की कोशिश कर रहा हूं जिसे aligned_storage के नाम से जाना जाता है। निम्नलिखित दस्तावेजों को पढ़ने के दौरान N2165, N3190 और N2140 मैं अपने जीवन के लिए एक बयान नहीं देख सकता जहां यह स्पष्ट रूप से उपयोग की जाने वाली स्मृति की ढेर या ढेर प्रकृति का वर्णन करता है।std :: aligned_storage (स्टैक या ढेर?)
मैंने msvc2010, बूस्ट और जीसीसी द्वारा प्रदान किए गए कार्यान्वयन पर एक नज़र डाली है, वे सभी एक संघ के उपयोग के आसपास केंद्रित एक स्टैक आधारित समाधान प्रदान करते हैं।
संक्षेप में:
स्मृति प्रकार (ढेर या ढेर) aligned_storage कार्यान्वयन द्वारा इस्तेमाल किया परिभाषित या यह हमेशा आधारित ढेर करने के लिए है है?
और, विशिष्ट दस्तावेज़ क्या है जो परिभाषित करता है/निर्धारित करता है?
नोट:
template<class _Ty, size_t _Len>
union _Align_type
{
// union with size _Len bytes and alignment of _Ty
_Ty _Val;
char _Pad[_Len];
};
: MSVC10 में, निम्न aligned_storage के प्रकार की परिभाषा, इस मामले में अगर aligned_storage एक ऑटो चर डेटा (_Val, _Pad) स्टैक पर बनाया जाता है है
नोट: यह एक मामूली सवाल नहीं है। उत्तर पोस्ट करने से पहले कृपया प्रश्न को आजमाएं और समझें।
मुझे यकीन नहीं है कि इसका उत्तर इससे बेहतर हो सकता है। डेटा टाइप गतिशील रूप से 'टाइप' में आवंटित किया गया था तो क्या होगा? संरेखण के संबंध में यह संभवतः किसी भी मदद से कैसे हो सकता है? – icecrime
@ जेनिकोडर - बस मानक से उद्धरण पढ़ें। और फिर, यदि आवश्यक हो। :) 'std :: aligned_storage <...> :: टाइप' अनुरोधित संरेखण के साथ एक पीओडी प्रकार परिभाषित करता है। आप इस प्रकार के ढेर या ढेर में भंडारण आवंटित कर सकते हैं, यह प्रासंगिक नहीं है। – atzz
@ जेनिकोडर - यह कार्यान्वयन-परिभाषित नहीं है। यह उपयोगकर्ता परिभाषित है। जेम्स द्वारा उद्धृत बयान सबकुछ स्पष्ट रूप से पर्याप्त बताता है। – atzz