new frage
-
übler Scherz von dir.
-
Spawn schrieb:
Keine Ahnung, wo das steht, aber das Programm zeigt das Verhalten
char* p=0; *p='x';
das funktioniert bei mir. Ist das jetzt legales C++?
-
Also wenn Struppi was sagt, dann stimmt das! Da kann dann auch kein MSDN-sonstewas-Experte was dran ändern.
Ich meine: Wer wird es besser wissen: der Vater von C++ oder ein Microsoftmitarbeiter?
-
Spawn schrieb:
Keine Ahnung, wo das steht, aber das Programm zeigt das Verhalten
Anscheinend hat es sich bei Neulingen eingebürgert, "undefiniert" zu sagen wenn "stürzt ab" gemeint ist. Nunja, das ist falsch. Dein Programm -- oder irgendein anderes Beispielprogramm -- interessiert nicht, wenn es um die Frage geht, ob das Verhalten definiert ist oder nicht. Definiert ist es, wenn im Standard vorgeschrieben ist, was dann zu passieren hat. Undefiniert ist es, wenn der Standard keinerlei Anforderungen an das Verhalten stellt.
(In Abschnitt 5.3.5 kann man sich über delete und delete[] schlau machen.)
http://anubis.dkuug.dk/jtc1/sc22/open/n2356/
-
Hallo,
also erstmal möchte ich darauf hinweisen, dass ich niemals unregistriert poste. Also nicht verwechseln.Als nächste kann ich nur sagen, dass mir eure Ignoranz manchmal die Sprache raubt. Entweder man weiß etwas, dann kann man auch das Maul aufreißen oder man weiß es nicht, dann hält man sich besser an den bekannten Rat von Dieter Nuhr. Alternativ kann man natürlich auch gerne Nachfragen. Nur sollte man sich nicht an unhaltbare Behauptungen klammern.
Zum Thema:
Im Standard steht unter 5.3.5/2:In the first alternativ (delete object), the value of the operand of delete shall be a pointer to a non-array object or a pointer to a sub-object representing a base class of such an object[...]. If not, the behavior is undefined.
Es spielt keine Rolle was Paul DiLascia in irgendeinem Journal schreibt und noch weniger spielt es eine Rolle, was irgendein Spawn auf irgendeinem Compiler für ein Ergebnis gesehen haben möchte.
Statt hier sinnlos zu disktuieren, sollte man sich schlicht und einfach eine Sache merken: Zu new passt delete und zu new[] passt delete[]. Fertig.
Alle die mehr wissen wollen, kommen nicht drum rum sich zuvor mit ein paar hässlichen Details zu beschäftigen. Dazu gehören auch solche Dinge wie die Bedeutung von "undefiniertem Verhalten".