यदि मेरे पास सरणी सदस्य के साथ संरचना है, और मैं स्पष्ट रूप से संरचना के निर्माता में सरणी के डिफ़ॉल्ट कन्स्ट्रक्टर को कॉल करता हूं, तो क्या तत्व डिफ़ॉल्ट-निर्मित हो जाएंगे? (एक पूर्णांक सरणी के मामले में, इसका मतलब शून्य-प्रारंभिक हो रहा है)।डिफॉल्ट-एक पूर्णांक सरणी का निर्माण शून्य-प्रारंभिक होगा?
struct S
{
S() : array() {}
int array[SIZE];
};
...
S s;
// is s.array zero-initialized?
जीसीसी के साथ एक त्वरित परीक्षण पता चलता है कि यह मामला है, लेकिन मैं इस बात की पुष्टि करने के लिए कि मैं इस व्यवहार पर भरोसा कर सकते थे।
(मैं देखा है कि अगर मैं नहीं स्पष्ट रूप से सरणी संरचना निर्माता में डिफ़ॉल्ट-निर्माण करते हैं, सरणी तत्वों यादृच्छिक मान हैं।)
कोई विशेष कारण आप 'std :: vector' का उपयोग नहीं कर रहे हैं? – AJG85
@ AJG85: हां। यदि मैं इन संरचनाओं में से 100000 की एक सरणी आवंटित करता हूं, तो मैं 100000 * आकार (int *) बाइट्स के साथ-साथ SIZE बाइट्स के 100000 आवंटन के एकल आवंटन के बजाय 100000 * SIZE बाइट्स के एकल आवंटन के परिणामस्वरूप चाहूंगा। (दूसरी ओर, मैं 'बूस्ट :: सरणी '(या' + std :: array' सी ++ 0x में) का उपयोग कर थोड़ा और C++ - y हो सकता हूं)। – HighCommander4
@ उच्च: 'std :: vector का आपका मानसिक मॉडल पूरी तरह से गलत है। इसमें फ्री-स्टोर पर लगभग 12 बाइट्स और कुछ ओवरहेड का निरंतर ओवरहेड है। –
fredoverflow