Löschen des Doppelzeigers ist der schädliche Effekt wie Absturz des Programms und Programmierer sollte versuchen, dies zu vermeiden, wie es nicht erlaubt ist. Aber irgendwann, wenn jemand das tut, dann wie kümmern wir uns darum. Als Löschen in C++ ist kein execept Operator und es werden keine Ausnahmen ausgelöst. Und sein schriftlicher Typ ist auch ungültig. Wie fangen wir diese Art von Ausnahmen? Unten ist der Code-SnippetWie man doppelt freien Absturz in C++ behandelt
class myException: public std::runtime_error
{
public:
myException(std::string const& msg):
std::runtime_error(msg)
{
cout<<"inside class \n";
}
};
void main()
{
int* set = new int[100];
cout <<"memory allcated \n";
//use set[]
delete [] set;
cout <<"After delete first \n";
try{
delete [] set;
throw myException("Error while deleting data \n");
}
catch(std::exception &e)
{
cout<<"exception \n";
}
catch(...)
{
cout<<"generic catch \n";
}
cout <<"After delete second \n";
In diesem Fall habe ich versucht, die Ausnahme, aber keinen Erfolg zu fangen. Bitte geben Sie Ihre Eingabe, wie wir uns um diese Art von Szenario kümmern werden. danke im voraus !!!
Verwenden Sie einen 'std :: vector'? –
Es gibt * nichts *, was Sie in der C++ - Sprache tun können, um doppelte Löschungen zu verarbeiten. Es ist undefiniertes Verhalten; Der Standard "enthält keine Anforderungen". Wenn Sie doppelt löschen, stürzt Ihr Code möglicherweise ab (keine Ausnahme), formatieren Sie Ihre Festplatte oder stellen Sie Ihren Browser-Passwort-Cache auf github. –