Oh mein Gott! Ich habe Windows gekillt! ;-)
-
Am besten Windows deinstallieren. Oder richtig mit Zeigern arbeiten. :xmas2:
geloescht
-
Vielleicht solltest du mal einen dieser Codes die dein Windows zum Absturz bringen posten!
-
Ich befürchte es liegt nicht an Windows sondern an dir
mfg JJ
-
Das war ja wohl von anfang an klar...
-
ich warte gespannt auf den code
-
Weißt du, du solltest vielleicht weniger Speicherlöcher erzeugen
-
Wie Windows NT 5.x zum Absturz gebracht? Sorry, aber ich hab es bishe rnoch nie (unabsichtlich) geschafft. OK, vielleicht bin ich auch nicht so ein schlechter Coder. Aber wie kann man denn NT 5.x zum Absturz bringen? Poste mal bitte Code! Ich glaub es nämlich nicht. Vielleicht eine Ausnahmeverletzung, aber mehr auch nicht.
-
ok, und wieder eine ERMAHNUNGan ALLE, thread-thema ist nicht 'lustig machen' sondern DENKEN
langsam STINKT ES MICH AN, wenn nicht der moderator etwas unternehmrn will; gehe ich andere wege
jeder hat sein problem -> resulat:->er wird zum A_R_S_C_H gemacht
das ist nicht das BOARD welches is kenne... was soll das??
KONSTRUKTIVIE KRITIK oder nichts
//edit: rechtschreibfehler entfernt
-
Tja, wie wir "denken" sollen ohne Sourcecode oder nähere Hinweise, ist mir schleierhaft. CSS hat genug Postings auf dem Zähler, das er weiß, wie man eine Frage hier stellt. Hellsehen können wir nicht... abgesehen davon, das ich NT5.x für ziemlich absturzsicher halte. Ich weiß nicht mal, ob es unter NT5.x einen Bluescreen gibt, da ich in all den Jahren keinen gesehen habe.
Was hat er gemacht? Hat er einen Treiber geschrieben? Wir wissen NICHTS!
Jeder hier weiß nur eines: er hat NT5.x ca. 30x zum Absturz gebracht. Und jetzt?
-
Ich kann mir nur vorstellen, dass er irgendwie einen vagabundierenden oder NULL-Zeiger erzeugt hat den er dann auch noch von irgendeiner Funktion etc. verwendet wird.
Vielleicht hast du einen Zeiger gelöscht und danach noch weiterverwendet?
Beispiel:#include <iostream> using namespace std; int main() { int* pInt = new int; *pInt = 100; cout << "*pInt = " << *pInt << endl; delete pInt; *pInt = 200; // Verwendung von pInt obwohl bereits per delete gelöscht cout << "*pInt = " << *pInt << endl; return 0; }
Dieser Code sollte im besten Fall "nur" zu einem Programmabsturz führen.
Der Grund hierfür ist, dass pInt immernoch auf den alten Speicherbereich zeigt aber der Computer wohlmöglich schon neue Daten in diesen Speicher geschrieben hat der Zeiger ja bereits gelöscht wurde. Das kann zu allen möglichen Fehlern führen, aber meistens stürzt das Programm einfach nur ab - sofort oder erst nach einiger Zeit. Aber du sagtest, dass dein ganzer Computer abstürzt? Mir ist es jedenfalls noch nie passiert, dass mir durch die falsche Verwendung von Zeigern das ganze System abgestürzt ist.
Grundsätzlich gilt bei der Verwendung von Zeigern:
Nach dem Löschen immer NULL zuweisen:pInt = NULL;
Aber am besten könnten wir dir immernoch helfen wenn du uns einen Teil des Codes gibts der deinen Computer zum Absturz bringt!
-
Sorry @ all.
Hab mich vertan, war unter Win 95.
-
MAG schrieb:
Grundsätzlich gilt bei der Verwendung von Zeigern:
Nach dem Löschen immer NULL zuweisen:Mache ich nur, wenn der Zeiger selber state anzeigt. Also zB bei einem smartpointer, wenn zeiger==NULL wird auf nix gezeigt. aber normale zeiger (sofern ich sie mal roh anfassen sollte) setze ich nicht auf 0 - das versteckt das hoechstens fehler...
-
Nungut, irgendwie haben uns die letzten beiden Antworten aber bei der Lösung des Problems nicht wirklich weitergebracht - oder?
Wäre wirklich gut wenn du endlich den Code postest! Oder sag einfach wenn du inzwischen kein Problem mehr hast.
-
Also es war wahrscheinlich so das ich unter Win 95 einen Zeiger auf den Reset-Schalter erlangen konnte. Diesen Zeiger habe ich dereferenziert und dann den Wert auf true gesetzt so das eine Strom floß und ein Reset durchgeführt wurde.
Unter Win XP gab es nur einen sogenannten "Acess Violation".
-
Hi Shade Of Mine,
Mache ich nur, wenn der Zeiger selber state anzeigt. Also zB bei einem smartpointer, wenn zeiger==NULL wird auf nix gezeigt. aber normale zeiger (sofern ich sie mal roh anfassen sollte) setze ich nicht auf 0 - das versteckt das hoechstens fehler...
Und wenn der Zeiger von woanders referenziert wird hat dann keiner ne Chance mehr
festzustellen ob der Zeiger (noch) gültig ist.mfg JJ
-
John Doe schrieb:
Und wenn der Zeiger von woanders referenziert wird hat dann keiner ne Chance mehr
festzustellen ob der Zeiger (noch) gültig ist.äh, man hat im Programm doch irgendeinen logischen Ablauf. Entweder es ist ein Zeiger der zugleich ein Flag ist, oder nicht.
Einfach mal immer auf null setzen bzw. bei jedenm Zugriff auf null testen, ist ganz großer blödsinn.
Man sollte sich schon im Klaren sein, was das Programm überhaupt tut.
-
Bei Programmen ab einer gewissen Grösse hab ich die Menge aller möglichen
Abläufe (=Benutzerinteraktionen) jedenfalls nicht mehr im Kopf. Wenn du das kannst
alle Achtung. (wofür brauchst du eigentlich einen Computer)
Bei mir zumindest prüfen alle Funktionen die Zeiger übergeben bekommen diese auf
Gültigkeit (!= 0). Im einfachsten Fall durch assert, dadurch finde ich definitiv
frühzeitig Fehler. Dies gehört ausserdem zu den Codingvorgaben die in unserer
Firma strikt vorgegeben sind und die auch persönlich für sinnvoll halte.mfg JJ
-
Das Überprüfen auf Null ist ja auch sinnvoll.
Aber nicht das Null-Setzen. :p
-
Hey du Cleverle, wie willst du denn auf Null prüfen wenn du das Ding nach Verwendung nie wieder auf Null setzt.
Ausserdem, wer nach Gebrauch nicht wieder "aufräumt", wird Pointer vermutlich auch
nicht mit NULL initialisieren, warum auch, den Ablauf des Programms hat man ja
schliesslich im Kopf.mfg JJ
-
Du machst also wirklich
delete p; p = NULL;
? Wie peinlich...