मुझे गतिशील रूप से आवंटित स्मृति की बात नहीं मिलती है और मुझे आशा है कि आप लोग मेरे लिए चीजों को स्पष्ट कर सकते हैं।सी ++ गतिशील रूप से आवंटित स्मृति
सबसे पहले, हर बार जब हम स्मृति आवंटित करते हैं तो हम बस उस स्मृति को एक सूचक प्राप्त करते हैं।
int * dynInt = new int;
तो क्या मैं ऊपर किया था और के बीच अंतर क्या है:
int someInt;
int* dynInt = &someInt;
के रूप में मैं समझता हूँ, दोनों ही मामलों स्मृति किसी पूर्णांक के लिए आवंटित किया जाता है, और हम उस स्मृति के लिए सूचक पाने में।
तो दोनों के बीच क्या अंतर है। एक विधि को दूसरी तरफ कब पसंद किया जाता है।
इसके अलावा अधिक कारण है कि मैं पहले मामले में
delete dynInt;
के साथ स्मृति को मुक्त करने के लिए, लेकिन दूसरे मामले में नहीं की जरूरत है।
मेरे अनुमान कर रहे हैं:
जब गतिशील एक वस्तु के लिए स्मृति आवंटन, वस्तु यदि आप दूसरे मामले में की तरह कुछ करते हैं, वस्तु मिलता है प्रारंभ करते हुए प्रारंभ नहीं होती है। यदि यह एकमात्र अंतर है, तो इस तथ्य के अलावा इसके पीछे कोई प्रेरणा है कि गतिशील रूप से स्मृति आवंटित करना तेज है।
कारण हमें दूसरे मामले के लिए हटाने का उपयोग करने की आवश्यकता नहीं है क्योंकि तथ्य यह है कि ऑब्जेक्ट प्रारंभ किया गया था, किसी प्रकार का स्वचालित विनाश दिनचर्या बनाता है।
ये अनुमान लगाएंगे कि किसी ने मुझे सही किया और मेरे लिए चीजों को स्पष्ट किया।
यदि आप अनिश्चित हैं, तो सरल नियम का पालन करें: "पॉइंटर्स का कभी भी उपयोग न करें; कभी भी 'नया' का उपयोग न करें।" एक बार जब आप मैन्युअल रूप से प्रबंधित ऑब्जेक्ट जीवनकाल की आवश्यकता को समझ लेते हैं, तो आपको पता चलेगा कि इस नियम को कब तोड़ना है। –
उम मैं दृढ़ता से आपको सी ++ के बारे में एक पुस्तक खोलने का आग्रह कर सकता हूं .. परिवर्तनीय स्कोप, गतिशील स्मृति प्रबंधन आमतौर पर किसी भी सी ++ शुरुआती किताबों के चौथे या 5 वें अध्याय में चर्चा की जाती है। @KerrekSB मैं यह नहीं कहूंगा .. विशेष रूप से इस मामले में अनिश्चितता अस्पष्टता से नहीं आती है, बल्कि पर्याप्त ज्ञान से नहीं - यदि आप अनिश्चित हैं तो सुनिश्चित करें कि आप पर्याप्त पढ़ते हैं ताकि आप सुनिश्चित हो सकें। – paul23
गतिशील रूप से आवंटित स्मृति आमतौर पर _slower_ है, और प्रारंभिकरण के पास इनमें से किसी के साथ कुछ लेना देना नहीं है। –