Grosse Menge von Daten als char array "reinkompilieren"



  • Hallo,

    ich habe mir folgendes ueberlegt um ein Setup-programm zu schreiben (ja, ich weiss dass es sachen wie InstallShield usw gibt, mochte es aber umbedingt selber basteln 🙂 ):

    - Ich packe alle daten in ein tar.gz, oder so.
    - Aus dem tar.gz erstelle ich eine .c datei, die ein Riesiges C char array enthalt
    - Ich linke nun mein Setup Programm statisch mit dem array und den tar/z libs.

    Die Frage ist nun: angenommen, ich packe da 20MB (komprimierter) Files rein, dann habe ich ein etwa 20MB grosses Executable. Wenn ich es ausfuhre, wird es in seiner Gesamtheit in den Speicher geladen? (Ich habe irgentwo gelesen, dass es in "modernen Betriebssystemen" ublich ist, dass nur die "gerade benotigten teile" des Executables in den Speicher geladen werden).

    Danke, Peter



  • Das hast du richtig in Erinnerung. Deine Applikation wird als sog. Memory Mapped File geladen, d.h. belegt im Endeffekt erst dann Speicher wenn der spezifische Bereich benötigt wird.



  • Weisst du villeicht, ob dem so auf Windows _und_ Linux ist? (Halt auf "gangigen" Betriebssystemen ?)

    Weiters wird auf die grosse Datenmenge sequentiell zugegriffen. Wird sich mein Speicher langsam mit den 20MB auffullen, oder werden die Blocke, nachdem auf Sie zugegriffen wurde, auch irgentwie freigegeben?


Anmelden zum Antworten