WorksheetsGestione della memoria in C++
Total questions: 10
Worksheet time: 5mins
Lo stack è ...
Gestito dal sistema
Gestito dall'utente
Soggetto a frammentazione
La parte di memoria in cui vanno le variabili statiche
Lo stack overflow...
Si verifica quando si tenta di allocare ulteriore spazio in uno Stack pieno
È esclusivamente un sito web in cui trovare le soluzioni a tutti i problemi della vita
Si verifica più raramente se si usa la ricorsione
Si verifica quando viene allocata troppa memoria nell'Heap, che quindi "invade" lo Stack
L'Heap...
non è mai più grande della memoria statica
contiene memoria allocata tramite la funzione malloc
contiene memoria allocata automaticamente quando dichiariamo variabili
viene svuotato automaticamente dalla CPU
Cosa si intende per "allocazione dinamica della memoria"?
La memoria viene allocata solo durante l'esecuzione del programma
Un metodo per allocare memoria in modo statico
Un'operazione eseguita automaticamente dal compilatore
La memoria viene allocata solo durante la compilazione del programma
Le variabili globali vengono allocate
Nello Stack
Nell'Heap
Nella memoria statica
Nella ROM
Dereferenziare un puntatore p significa
Leggere il contenuto della variabile puntata da p
Liberare la memoria puntata da p
Dichiarare il puntatore p
Cambiare l'indirizzo di memoria puntato da p
Un memory leak...
Non può verificarsi se uso solo l'Heap
Si verifica quando non si libera della memoria allocata dinamicamente e si perde il puntatore relativo.
Si verifica in seguito allo stack overflow, ovvero quando parte dello Stack finisce nell'Heap.
Si verifica molto più frequentemente se la memoria è frammentata
La funzione free()
Va usata esclusivamente se allochiamo variabili nello Stack
Va usata ogni volta che allochiamo della memoria nell'Heap
Può non essere usata se la memoria è allocata dinamicamente
Va usata subito dopo aver dichiarato un puntatore e aver allocato della memoria
Quale delle seguenti sintassi è corretta?
string* p = (string*) malloc(sizeof(string) * studenti);
string* p = malloc(sizeof(string) * studenti);
string &p = (string*) malloc(sizeof(string) * studenti);
string* p = (string*) malloc(studenti);
Quale di queste sintassi è corretta?
int a = 42;
int* i = &a;
char c = 'a';
char* p = *c;
String s = "hello";
String &p = *s;
float f = 4.2;
float i = &f;
