Abstraktes Problem: Ich habe einen Code in C. Nach dem Kompilieren hat die ausführbare Datei 604 KB. Ich möchte, dass es größer wird, sagen wir 100 MB.
Wie erreichen Sie das?
Ich könnte eine Zeichenfolge deklarieren, um die binäre Größe zu erhöhen, aber gibt es eine skalierbare Lösung. Das heißt, ich möchte die kompilierte Größe um N Bytes erhöhen, ohne den Quellcode um N Bytes zu erhöhen.
%Vor%Anwendungsfall: Ich entwickle Firmware und testet die Remote-Firmware-Upgrade-Funktion. Ich würde gerne sehen, wie es sich verhält, wenn die Firmware groß und schwer ist.
Dies erstellt eine ausführbare Datei von 100 MB, wenn sie mit gcc:
kompiliert wird %Vor% Wenn Sie das Array außerhalb von main
definieren, blasen Sie den Stack nicht. Durch die Verwendung des Arrays wird es von gcc nicht optimiert.
Sie müssen ein globales Array mit allen explizit initialisierten Elementen erstellen. Die Elemente sollten randomisiert sein, ansonsten optimiert der Compiler wahrscheinlich die Initialisierungsliste im kompilierten Code.
Sie benötigen zuerst ein separates Programm, um Ihr Array zu generieren:
%Vor%Führen Sie dies aus und leiten Sie die Ausgabe in eine Datei um:
%Vor%Dann bekommst du array.c, das ungefähr so aussieht:
%Vor%Dann fügst du das in deine Hauptquelle ein:
%Vor%Tags und Links c