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

Α13.5 · Ένας τεράστιος πίνακας στον σωρό

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

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

#include <stdio.h>
#include <stdlib.h>
int main() {
  char *bomb = malloc(sizeof(char) * 9000000);
  printf("Hello World\n");
  return 0;
}

Τι θα κάνει αν η malloc ζητήσει sizeof(char) * 900000000000L bytes; Και τι αν μετά από αυτή την κλήση προσθέσουμε τη γραμμή bomb[0] = 'A'; πριν το printf; Πώς πρέπει να διορθωθεί το πρόγραμμα;

Υπόδειξη

Συγκρίνετε κάθε μέγεθος με τη μνήμη του υπολογιστή σας. Τι επιστρέφει η malloc όταν δεν υπάρχει αρκετή μνήμη, και τι γίνεται όταν γράφουμε σε αυτή τη διεύθυνση;

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