इस I need C++ array class template, which is fixed-size, stack-based and doesn't require default constructor उत्तर में मैंने कोड का एक टुकड़ा पोस्ट किया है, जो चार सरणी के साथ प्लेसमेंट नया उपयोग कर रहा है। मेरे लिए, यह बिल्कुल सामान्य है। लेकिन टिप्पणियों के मुताबिक यह कोड गलत है।प्लेसमेंट नया मुद्दा
क्या कोई और विस्तार से समझा सकता है?
विशेष रूप से सरणी के साथ क्या गलत हो सकता है। टिप्पणियों से मैं क्या समझता हूं कि T x[size];
char x[size*sizeof(T)];
में फिट नहीं हो सकता है। मुझे विश्वास नहीं है कि यह सच है।
संपादित करें:
मैं बस अधिक से अधिक भ्रमित हूं। मुझे पता है कि संरचनाओं के मामले में संरेखण क्या है। हां, जब आपके पास संरचना होती है तो गुण अलग-अलग ऑफसेट पर शुरू होते हैं तो आप सोच सकते हैं।
ठीक है, अब हम सरणी पर वापस आ गए हैं। आप मुझे बता रहे हैं कि T x[size];
char x[size*sizeof(T)];
जैसा ही आकार है, फिर भी मैं टी सरणी के रूप में चार सरणी तक नहीं पहुंच सकता क्योंकि कुछ संरेखण हो सकता है। सरणी के समान आकार होने पर संरेखण कैसे हो सकता है?
संपादित करें 2:
ठीक मैं अंत में इसे पाने के, यह एक गलत पते पर शुरू हो सकता है।
संपादित करें 3:
Thx सब लोग, आप पोस्ट :-) ओह, अब यह कुल मेरे मन विस्फोट से उड़ा दिया रोक सकता है। मैंने कभी यह महसूस नहीं किया कि यह संभव था।
आपने टिप्पणियों को गलत समझा। यह * फिट बैठता है, लेकिन चार-सरणी गलत गठबंधन हो सकती है। –
@ स्टेव लेकिन इसका क्या अर्थ है, कृपया समझाएं। चार सरणी की तरह विपरीत क्रम में या अनुक्रमित किया जाएगा। मुझे क्या हो सकता है इसका कुछ उदाहरण दें। मैं केवल संरचनाओं के संदर्भ में और छोटे/बड़े-एंडियन के संदर्भ में संरेखण को समझता हूं। –
@Let_Me_Be: एक स्पष्टीकरण के लिए http://en.wikipedia.org/wiki/Segmentation_fault#Bus_error यहां एक नज़र डालें। –