Nicht nach NULL prüfen ?

Alles rund um die Programmierung mit Qt
Antworten
neueHier
Beiträge: 2
Registriert: 20. Januar 2009 13:50

Nicht nach NULL prüfen ?

Beitrag von neueHier »

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));
....
}
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

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
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

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 ...
neueHier
Beiträge: 2
Registriert: 20. Januar 2009 13:50

Beitrag von neueHier »

Wow, das war aber schnell. :o
Vielen Dank für beide Antworte!
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

naja wobei wenn du dir einen ptr auf ein Objekt von dir selbst holst (am Besten noch via ner Fkt) macht es schon Sinn zu prüfen ob es geklappt hat. Sicher nicht immer aber es gibt dennoch Fälle in denen ein

if (ptr) Sinn macht
Antworten