निम्नलिखित कोड पर विचार करें'इसे हटाएं;' कथन के दौरान क्या हो रहा है? निम्नलिखित दो विकल्पों में</p> <pre><code>class foo { public: foo(){} ~foo(){} void done() { delete this;} private: int x; }; </code></pre> <p>क्या हो रहा है (और यह वैध है?):
विकल्प 1:
void main()
{
foo* a = new foo();
a->done();
delete a;
}
विकल्प 2:
void main()
{
foo a;
a.done();
}
दूसरा delete a;
कथन चुनने पर कथन होगा आयन 1 अपवाद या ढेर भ्रष्टाचार का कारण बन जाएगा?
विकल्प 2 अपवाद या ढेर भ्रष्टाचार का कारण बन जाएगा?
क्या आप गलती से कक्षा के लिए शुरुआती ब्रैकेट भूल गए थे या क्या यह वास्तव में प्रतिलिपि कोड कॉपी है? – Neophile
@Nerds: एक टाइपो - निश्चित ... – NirMH
दिलचस्प। मुझे लगता है कि पहले सेगफॉल्ट या हीप भ्रष्टाचार का कारण बनता है, और दूसरा जो कुछ भी स्टैक करने के लिए पॉइंटर को हटा देता है। – cha0site