Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α13.7 · Ένας τεράστιος πίνακας στη στοίβα

Διάλεξη 13, διαφάνειες 28–31 · Δυσκολία ★★☆ · trace · Κεφάλαια: 13

Τι θα κάνει το ακόλουθο πρόγραμμα;

#include <stdio.h>

int main() {
  char bomb[9000000];
  printf("Hello World\n");
  return 0;
}
$ ulimit -s
8192

Τι αλλάζει αν πρώτα εκτελέσουμε ulimit -s unlimited; Και τι κάνουμε όταν η στοίβα δεν είναι αρκετή και χρειάζεται να χρησιμοποιήσουμε πίνακες μεγάλου μεγέθους;

Υπόδειξη

Η τιμή του ulimit -s είναι σε KB. Συγκρίνετε τη με το μέγεθος του τοπικού πίνακα και θυμηθείτε πού αποθηκεύονται οι τοπικές μεταβλητές. Για το τελευταίο ερώτημα, σκεφτείτε ποια άλλη κατηγορία μνήμης μπορεί να δεσμεύσει όλη τη διαθέσιμη μνήμη.

Αριθμός στον οδηγό: Α13.7 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec13-stack-bomb · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec13-stack-bomb.html · Markdown (GitHub)