Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

24.06.2003, 20:03

delete auf NULL-Zeiger ist harmlos

Hi

wollte nur mal drauf hinweisen, das ein delete auf einen Nullzeiger harmlos ist und nicht zu einem Programmabsturz führt, wie du es auf Seite 35 beschreibst.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

24.06.2003, 20:16

Danke für den Hinweis, ich werde es abändern.
"delete[] NULL;" ist jedoch nicht unbedingt sicher.

C++ Newbie

Frischling

Beiträge: 34

Wohnort: Dortmund

Beruf: Schüler

  • Private Nachricht senden

3

25.06.2003, 19:39

sicher ? c-plusplus.de
Wer Rechtschreibfähler finded darf sie behählten

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

25.06.2003, 20:21

Dort steht ja auch, dass der Standard nicht definiert, was bei "delete[] NULL;" passiert. Also ist es nicht sicher. Unabhängig davon, ob jetzt bei einzelnen (oder allen) Compilern nichts passiert.

C++ Newbie

Frischling

Beiträge: 34

Wohnort: Dortmund

Beruf: Schüler

  • Private Nachricht senden

5

25.06.2003, 20:33

Haben wir beide den selben Thread gelesen?

Ganz unten steht:

Zitat


Also ist 0 gleichzusetzen mit einem NULL-Zeiger ?

int *pNull;

pNull = 0;
delete[] pNull; //passiert nichts

pNull = NULL;
delete[] pNull; //hier auch nicht


Darauf Bashar:

Zitat


das dritte wird nicht klappen, weil es in C++ keine automatische Umwandlung von void* zu anderen Zeigern gibt. Ansonsten hast du recht.
Wer Rechtschreibfähler finded darf sie behählten

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

25.06.2003, 20:38

Aber lies mal hier. Da schreibt einer, dass das Verhalten "delete[] NULL;" im Standard nicht definiert sei.

http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&threadm=3hqnl1%24e1j%40info-server.bbn.com&rnum=6&prev=/groups%3Fq%3D%2522delete%255B%255D%2BNULL%2522%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26selm%3D3hqnl1%2524e1j%2540info-server.bbn.com%26rnum%3D6

Sorry für die lange URL...

C++ Newbie

Frischling

Beiträge: 34

Wohnort: Dortmund

Beruf: Schüler

  • Private Nachricht senden

7

25.06.2003, 21:20

Aus dem Standard:

Zitat


In the second alternative (delete array), the value
of the operand of delete shall be the pointer value which resulted
from a previous array new-expression.18 ) If not, the behavior is unde-
fined. [Note: this means that the syntax of the delete-expression
must match the type of the object allocated by new, not the syntax of
the new-expression. ] [Note: a pointer to a const type can be the
operand of a delete-expression; it is not necessary to cast away the
constness (_expr.const.cast_) of the pointer expression before it is
_________________________
18 ) For non-zero-length arrays, this is the same as a pointer to the
first element of the array created by that new-expression. Zero-
length arrays do not have a first element.


Jetzt muss man nur noch wissen was mit der Fußnote gemeint ist.
Wer Rechtschreibfähler finded darf sie behählten

Werbeanzeige