C++ में "तीन का नियम" क्या है और इसका उल्लंघन करने से मेमोरी लीक क्यों होती है?
नमस्ते! मैंने C++ सीखना शुरू किया है और एक अजीब त्रुटि का सामना किया। मेरे पास एक `SimpleString` class है जो डायनामिक string स्टोर करती है। मैंने constructor और destructor लिखा, लेकिन जब मैं object को copy करने या एक object को दूसरे को assign करने की कोशिश करता हूँ, तो program crash हो जाता है या garbage आउटपुट देता है। यहाँ कोड का उदाहरण है:
```cpp
#include
#include
class SimpleString {
public:
char* data;
SimpleString(const char* str) {
data = new char[strlen(str) + 1];
strcpy(data, str);
std::cout << "Constructed: " << data << std::endl;
}
~SimpleString() {
delete[] data;
std::cout << "Destructed" << std::endl;
}
};
int main() {
SimpleString a("Hello");
SimpleString b = a; // Copying
SimpleString c("World");
c = a; // Assignment
return 0;
}
```
Program double free error के साथ crash होता है या विकृत strings आउटपुट करता है। मैं समझता हूँ कि समस्या यह है कि copy करने के बाद दो objects एक ही मेमोरी को point करते हैं।