मान लें मैं इस तरह एक वर्ग को परिभाषित किया है:संकेत का एक वेक्टर समाशोधन
class foo {
private:
std::vector< int* > v;
public:
...
void bar1()
{
for (int i = 0; i < 10; i++) {
int *a = new int;
v.push_back(a);
}
};
void bar2()
{
std::vector<int>::iterator it = v.begin();
for (; it != v.end(); it++)
std::cout << (*it);
v.clear();
}
};
संक्षेप में, मैं एक सदिश में कुछ संकेत दिए गए पीछे धकेलने, बाद में मैं वेक्टर साफ़ करें। सवाल यह है कि क्या इस कोड में स्मृति रिसाव है? मेरा मतलब है वेक्टर को साफ़ करके, क्या पॉइंटर्स ठीक से हटाए गए हैं?
आप वास्तव में वेक्टर के लिए केवल एक ही सूचक धक्का; 'bar1' में 'for' लूप' केवल 'नई int;' लाइन निष्पादित करता है क्योंकि इसमें कोई घुंघराले ब्रेसिज़ नहीं है, और 'i +++' एक वाक्यविन्यास त्रुटि है और ... आह ठीक है, मुझे लगता है कि यह छद्म कोड होना है। –
@ फ्रीरिक राबे: संपादित ... – mahmood
आपको इंट पॉइंटर्स के वेक्टर की भी आवश्यकता है: 'std :: vector < int* > v;' 'std :: vector < int > v;' – juanchopanza