Ich löse eine Testfrage und bin mir nicht sicher mit der richtigen Antwort. Die Frage ist: Wenn ich den Code unter 32-Bit-Betriebssystem ausführen, wie viel Speicherplatz wird auf Stapel im Moment zugeordnet, wenn wir von Funktion malloc() in Funktion hook() zurückkehren. Es wird auch angenommen, dass der gesamte erforderliche Speicher zugewiesen wurde.Wie viel Platz ist auf dem Stapel zugeteilt
…char A[1000000]…
int hook() {char C[2000000]; …
ptr_char2 = (char) malloc (5000000)); /*Hi guys, how much memory do I have now?*/……
}
int main() {
char B[3000000];……
ptr_char = (char*) malloc (4000000));
hook();…
}
Ich weiß, dass auf dem Stack statisch zugewiesenen Variablen gespeichert. Dynamisch zugeordnet sind auf dem Heap. Ich habe versucht, char A (0.9MB) + char B (1.9) + char C (2.8) zu zählen und es dauert etwa 5,6MB. Die richtige Antwort ist jedoch eine der folgenden 1MB, 5MB oder 9MB. Könnte mir jemand helfen, wo ich Fehler mache? Vielen Dank im Voraus.
Sie sollen den Code * verbatim * in die Frage einfügen, bitte bearbeiten Sie entsprechend, danke! –
Hallo und willkommen bei Stackoverflow. Diese Website enthält Fragen und Antworten, damit sie für andere Menschen in Zukunft nützlich sein können. Zu diesem Zweck müssen Sie den eigentlichen Code und keinen Link zu ihm oder ein Bild davon veröffentlichen. – spectras
OK, ich habe nur einen Screenshot der Frage eingefügt, aber ich habe versucht, sie zu bearbeiten. Es tut uns leid. – Kandri6