मैं पॉइंटर वेक्टर में मेमोरी कैसे मुक्त कर सकता हूं? कोड यह रहा:मैं पॉइंटर वेक्टर कैसे मुक्त कर सकता हूं?
class A
{
private:
int x,y,z;
public:
A(param1, param2, param3)
{
x=param1;
y=param2;
z=param3;
}
~A()
{
//prompts an alertbox, warning me about the successful call of the destructor;
}
};
...
vector<A*> list;
list.push_back(new A(1,2,3));
list.erase(list.begin()+index);//SHOULD delete the object from the memory;
list.clear();
मुझे लगता है कि .erase()
पता चला मेमोरी खाली नही करता, और नाशक कॉल; मैंने पुनरावृत्ति के साथ प्रत्येक सूची प्रविष्टि पर delete
का उपयोग करने का प्रयास किया, लेकिन एक पुनरावृत्ति के बाद दुर्घटनाग्रस्त हो गया। किसी भी त्रुटि से बचने के लिए, सूची प्रविष्टि पहले से ही पूर्ण है, पहले ही जांच की गई है। क्या मुझे कुछ याद आ रही है? इसके अलावा, मुझे केवल एसटीएल का उपयोग करना होगा, बूस्ट की आवश्यकता नहीं है।
ध्यान दें कि 'NULL' सूचक पर 'हटाएं' को कॉल करना सुरक्षित है। –
आप बूस्ट पीआरटी कंटेनर लाइब्रेरी से 'बूस्ट :: ptr_vector' का उपयोग करना चाहेंगे। –
सादा 'ए' कब करेंगे, 'ए *' का उपयोग क्यों करें? –