Ich habe hier eine dumme Frage ...
In keinen Beispiel, die ich bis jetzt gesehen habe, wird nach einen new() auf NULL geprüft. Sogar der von uic generierte Kode macht new() und danach wird vor einem Zugriff nicht auf NULL geprüft.
Braucht man das nicht?
void setupUi(QDialog *amyDlg)
{
amyDlg->setObjectName(QString::fromUtf8("amyDlg"));
amyFrame = new QFrame(amyDlg);
amyFrame ->setObjectName(QString::fromUtf8("amyFrame "));
amyFrame ->setGeometry(QRect(0, 0, 417, 370));
....
}
Nicht nach NULL prüfen ?
Wenn Du nicht gerade auf einem Handy arbeitest, welches knapp an Speicher ist, dann sollte es in der Regel unnötig sein. Wenn Du auf Nummer sicher gehen willst das genügend Speicher allokiert werden konnte, is es aber auch nicht verkehrt.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
new = c++
die c++ runtime wirft dir im Falle das sie den speicher ned allokieren kann, eine bad_alloc exception.
Fuer den normalen fall, also wenn nen new schiefgeht, dann geht soweiso nur noch rudimentaere schadensbegrenzung. zumindest geht die c++ runtime davon aus.
Wer denkt, das er nach nem bad_alloc durch ein "normales new" noch ne MessageBox hochbekommt, muss schon Berufsoptimist sein
Also wird man das bad_alloc an zentraler stelle abfangen, dringenste dinge noch sichern wenn noetig und möglich, und die application eh mit nem abort() ueber den Jordan schicken ...
Implementierst du keine eigene fehlerbehandlung, wird dir per standard eh das abort() aufgerufen und du kommst aus dem new eh ned wieder raus ...
Ueberprufen des news macht nur sinn, wenn das programm trotz schiefgelaufen new ueberhaupt noch was machen kann ... und dafuer muesstest das bad_alloc sowieso umleiten ... also in ganz wenigen spzialfaellen intressant, wo man speichertechnich ganz genau weiss was man tut ... ansonsten ist das checken des news eigentlich nur wirklich unnoetiger overhaed (aber sehr sehr geringer Overhaed im vergleich zum new selber ^^ ).
Ciao ...
die c++ runtime wirft dir im Falle das sie den speicher ned allokieren kann, eine bad_alloc exception.
Fuer den normalen fall, also wenn nen new schiefgeht, dann geht soweiso nur noch rudimentaere schadensbegrenzung. zumindest geht die c++ runtime davon aus.
Wer denkt, das er nach nem bad_alloc durch ein "normales new" noch ne MessageBox hochbekommt, muss schon Berufsoptimist sein
Also wird man das bad_alloc an zentraler stelle abfangen, dringenste dinge noch sichern wenn noetig und möglich, und die application eh mit nem abort() ueber den Jordan schicken ...
Implementierst du keine eigene fehlerbehandlung, wird dir per standard eh das abort() aufgerufen und du kommst aus dem new eh ned wieder raus ...
Ueberprufen des news macht nur sinn, wenn das programm trotz schiefgelaufen new ueberhaupt noch was machen kann ... und dafuer muesstest das bad_alloc sowieso umleiten ... also in ganz wenigen spzialfaellen intressant, wo man speichertechnich ganz genau weiss was man tut ... ansonsten ist das checken des news eigentlich nur wirklich unnoetiger overhaed (aber sehr sehr geringer Overhaed im vergleich zum new selber ^^ ).
Ciao ...