012
24.10.2005, 13:42 Uhr
dirweis
|
moment, langsam bitte, das interessiert mich jetzt aber doch.
Zitat: |
Das Ergebnis ist das gleiche wie bei der initialisierung mit NULL, wobei aber aus technischer sicht die 0 eine Ganzzahlkonstante und NULL eine Konstante für die Adresse 0 ist.
|
meines bisherigen wissens nach zeigt ein zeiger mit NULL initialisiert auf überhaupt keine adresse, womit sicher gestellt wird, dass über den zeiger nicht in den speicher geschrieben werden kann. eben das ist ja die gefahr bei wilden zeigern, dass sie irgendwohin auf den speicher zeigen und dann eben auch dahin schreiben. das ist unter normalen betriebssystemen aber immer noch kein koller, da diese über speicherschutz verfügen und das programm eben mit einer entsprechenden fehlermeldung terminiert. das einzige bs, von dem ich weiß, dass der speicherschutz außen vorgelassen wurde, ist ms-dos - steht ja nicht umsonst für microsoft dirty operating system. mit der verschmelzung der gui windows 98 und dem betriebssystem windows nt auf windows 2000-ebene war dieses problem aber auch wieder aus der welt (wers glaubt). oder ist es so, dass die adresse 0 tatsächlich als erste adresse im speicher auch physikalisch existiert und dort einfach nur der ganze müll hingeschrieben wird - vergleichbar mit /dev/null ?
beste grüße -- main(){int x=0,y=1228443207;for(;x<105;++x,y=x<32?y:x<64?3392743058u:x<96?611502372:137)putchar((x+1)%21?y&1<<x?64:32:10);} |