मुझे पॉइंटर्स के सरणी प्रारंभ करने में परेशानी थी। क्या मैं जीसीसी C++ (4.6.0) के साथ संकलन में पता चला है:सी ++ पॉइंटर सरणी प्रारंभिक सहायता
MyClass** a = new MyClass*[100];
हमेशा संकेत की सरणी initalize नहीं करता है। (समय यह किया से ज्यादातर मुझे अशक्त संकेत दिए गए जो मुझे उलझन की एक सरणी देना)
MyClass** a = new MyClass*[100]();
करता है 0 (शून्य सूचक) को सरणी में सभी संकेत आरंभ कर देगा।
मैं जो कोड लिख रहा हूं वह विंडोज/लिनक्स/मैक/बीएसडी प्लेटफार्मों में पोर्टेबल होना है। क्या यह जीसीसी सी ++ कंपाइलर की एक विशेष विशेषता है? या यह मानक सी ++ है? मानक में कहां ऐसा कहता है?
मुमकिन है आप 'MyClass ** एक = नए MyClass मतलब * [100]()'। हां, 'नया' प्रारंभकर्ता एक मानक सुविधा है। मैं बस एक डुप्लिकेट सवाल शिकार कर रहा हूँ। –
काफी डुप्लीकेट नहीं है क्योंकि यह पूछता है कि क्यों नहीं (जो गलत है) क्यों: http://stackoverflow.com/questions/6717246/no-array-allocated-using- new-can-have-an-initializer .. लेकिन पर्याप्त बंद करो। बंद करने के लिए वोटिंग। –
पहला संस्करण अनियमित स्मृति लौटाता है, जो निश्चित रूप से * शून्य हो सकता है (शून्य) यदि यह पहले अप्रयुक्त है। अधिकांश ओएस सुरक्षा कारणों से, प्रक्रिया में आवंटित स्मृति को साफ़ करते हैं। –