हटाएं मैं सी ++ में चीजों को हटाने के संबंध में पूरी तरह उलझन में हूं यदि मैं ऑब्जेक्ट्स की एक सरणी घोषित करता हूं और यदि मैं clear()
फ़ंक्शन का उपयोग करता हूं। क्या मुझे यकीन है कि स्मृति जारी की गई थी?सी ++ वेक्टर, ऑब्जेक्ट्स, फ्री मेमोरी
tempObject obj1;
tempObject obj2;
vector<tempObject> tempVector;
tempVector.pushback(obj1);
tempVector.pushback(obj2);
मैं सुरक्षित रूप से सभी स्मृति को मुक्त करने के स्पष्ट फोन कर सकते हैं:
उदाहरण के लिए? या क्या मुझे एक-एक करके हटाने के लिए पुन: प्रयास करना होगा?
tempVector.clear();
यदि यह परिदृश्य वस्तुओं के सूचक में बदल जाता है, तो क्या उत्तर ऊपर जैसा ही होगा?
दूसरे मामले से दूसरे मामले की तुलना में कुछ भी अलग नहीं है, जो कि वेक्टर को इंगित करता है। मुझे लगता है कि इस सवाल को व्यापक किया जाना चाहिए ताकि आप समझ सकें कि मेमोरी आवंटन/डीलोकेशन कैसे काम करना चाहिए, और शायद पॉइंटर्स भी। – Marlon
यह कहता है कि इसे फ़ंक्शन स्टैक के अंदर घोषित करने से स्वचालित रूप से विनाशक को बंद कर दिया जाता है। https://stackoverflow.com/questions/3054567/right-way-to-deallocate-an-stdvector-object –