Werden Dateien überschrieben?



  • Ein freundliches Hallo an alle.

    Ich hoffe mal die Frage wurde nicht doch schon irgendwo gestellt, hab mit der Suche auf jeden Fall nichts gefunden. Als C-Einsteiger habe ich folgende Frage:

    Ich kann ja direkte Speicheradressen in C über Zeiger vergeben. Wie stelle ich denn sicher, dass wenn ich mir da nun eine aus dem Ärmel ziehe und darin was speicher, ich damit nicht ungewollt irgendwelche nicht-schreibgeschützten Dateien (ob es jetzt vom Betriebssystem (Mac OS 😵 oder private Dateien sind) überschreibe? Ich kenne ja die Speicherbereiche in die meine Festplatte aufgeteilt ist, nicht. Oder gibt man nur virtuelle Adressen an und der schlaue Compiler schaut, dass er das in den Speicherbereich des Projektes schreibt?
    Hier stellt sich natuerlich die Frage, wo definiert is, was hierzu gehoert....
    Falls es wichtig sein sollte: als Compiler/Editor verwende ich Xcode.

    Ich hoffe ihr versteht mein Problem - über eine Antwort auf diese theoretische Frage wuerde ich mich sehr freuen!

    Schoenen Abend noch,

    Gruesse, Art



  • Für gewöhnlich zeigen Zeiger in den RAM und nicht auf die Festplatte. 😕

    Adressen werden auch nicht aus dem Ärmel geschüttelt, sondern man benutzt ganz gerne Funktionen, die einem Speicher klarmachen oder Dateien öffnen.



  • Wie emwtf schon gesagt hat, ist der Arbeitsspeicher getrennt von Dateien. Aber du kannst dennoch bei modernen Betriebssystemen nicht einfach einem Zeiger eine beliebige Adresse zuweisen und dann dahin schreiben. Dies wird sehr wahrscheinlich zu einem Absturz (SegFault) führen. Du musst den Speicher vorher mit man: malloc (oä.) reservieren!

    Siehe auch http://www.c-plusplus.net/forum/viewtopic.php?t=206606



  • Wobei zu sagen ist dass dein Programm abstürzt, nicht das System. Dateien must du explizit öffnen, vorher passiert da garnichts.



  • Vielen Dank fuer die Antworten und die Hilfestellung!


Anmelden zum Antworten