z6.6.1-copy.cc
class MyClass { public: MyClass(); ~MyClass(); private: int* dataObj; ... };
MyClass::MyClass() { dataObj = new int; *dataObj = -1; }
MyClass::~MyClass() { delete dataObj; }
void SomeFunction(MyClass localObj) { /* Do something with localObj */ }
int main() { MyClass tempClassObj; // Create object of type MyClass
Constructor called.
tempClassObj.SetDataObj(9);
cout << "Before: " << tempClassObj.GetDataObj() << endl;
Before: 9
SomeFunction(tempClassObj); // tempClassObj is passed by value, i.e. copied
Destructor called.
cout << "After: " << tempClassObj.GetDataObj() << endl;
After: 0
}
Destructor called.
*** Error in `./a.out': double free or corruption (fasttop): 0x0000000000d2bc20 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81489)[0x7f039f06d489]
...
Abort