我无法找到我编写的下面的代码中的错误[虽然没有任何用途]。 只有在派生类时才给出SEG FAULT的代码!
#include < iostream >
#include < cstdlib >
using namespace std;
class Base{
public:
Base(){cout << "Base class constructor" << endl;}
void funv() {};
~Base(){cout << "Base class destructor" << endl;} ;
};
class Derived:public Base{
public:
char *ch;
Derived():ch(new char[6]()){}
~Derived(){
cout << "before" << endl;
delete [] ch;
ch = NULL;
cout << "after" << endl;
}
};
int main(){
Derived * ptr = new Derived;
//memcpy(ptr -> ch,"ar\0",4); // Works when class Derived is derved from base and also when not derived from base
ptr -> ch = const_cast < char* >("ar0"); // Works only when class Derived is not derived from class Base
cout << ptr -> ch[1] << endl;
ptr -> funv();
delete ptr;
return 0;
}
我评论的代码行嫌上。
我使用的Sun Studio 12
-1:不知道为什么你认为这将是安全的。 – 2014-07-07 17:21:03
@LightnessRacesinOrbit:是的,在问了这个问题超过3年后,即使我现在不知道为什么我认为它会安全:)。感谢您使它注意到 – Arunmu 2014-07-07 18:49:50