Allocazione Dinamica delle Struct
Rivediamo come allocare dinamicamente la memoria nel linguaggio C.
Per allocare memoria nell'heap, utilizzare la funzione malloc() dalla libreria stdlib.h:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Quando si alloca dinamicamente la memoria per l'utilizzo nel programma, tale memoria rimane riservata fino a quando non viene liberata esplicitamente utilizzando free().
main.c
12345678910111213141516171819#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }
Se una struttura contiene diversi campi di tipi di dati differenti, il compilatore uniformerà la dimensione dei campi affinché la struttura sia "comodamente" memorizzata in memoria.
Dopo aver completato il lavoro, presta attenzione a quanti byte vengono allocati per la struttura con i campi int e char. Questo fenomeno verrà discusso più avanti in questo corso.
Swipe to start coding
È necessario creare una struttura Student e allocare dinamicamente la memoria per essa utilizzando la funzione malloc().
Il compito consiste nell'inizializzare la struttura con valori di esempio e restituire un puntatore ad essa.
All'interno della funzione createStudent:
- Utilizzare
malloc()per allocare memoria per una struttura Student. - Verificare se l'allocazione è stata effettuata con successo (in caso contrario, restituire
NULL). - Assegnare un nome predefinito utilizzando
sprintf()— ad esempio,"Alice Johnson". - Assegnare un valore per
age, come21. - Assegnare un valore per
gpa, come3.85. - Restituire il puntatore alla struttura allocata.
Nella funzione main:
- Utilizzare la funzione
free()per rilasciare la memoria allocata dopo l'utilizzo.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain why the compiler equalizes the size of structure fields?
How do I check the size of a structure in C?
What happens if I forget to free dynamically allocated memory?
Fantastico!
Completion tasso migliorato a 4.35
Allocazione Dinamica delle Struct
Scorri per mostrare il menu
Rivediamo come allocare dinamicamente la memoria nel linguaggio C.
Per allocare memoria nell'heap, utilizzare la funzione malloc() dalla libreria stdlib.h:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Quando si alloca dinamicamente la memoria per l'utilizzo nel programma, tale memoria rimane riservata fino a quando non viene liberata esplicitamente utilizzando free().
main.c
12345678910111213141516171819#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }
Se una struttura contiene diversi campi di tipi di dati differenti, il compilatore uniformerà la dimensione dei campi affinché la struttura sia "comodamente" memorizzata in memoria.
Dopo aver completato il lavoro, presta attenzione a quanti byte vengono allocati per la struttura con i campi int e char. Questo fenomeno verrà discusso più avanti in questo corso.
Swipe to start coding
È necessario creare una struttura Student e allocare dinamicamente la memoria per essa utilizzando la funzione malloc().
Il compito consiste nell'inizializzare la struttura con valori di esempio e restituire un puntatore ad essa.
All'interno della funzione createStudent:
- Utilizzare
malloc()per allocare memoria per una struttura Student. - Verificare se l'allocazione è stata effettuata con successo (in caso contrario, restituire
NULL). - Assegnare un nome predefinito utilizzando
sprintf()— ad esempio,"Alice Johnson". - Assegnare un valore per
age, come21. - Assegnare un valore per
gpa, come3.85. - Restituire il puntatore alla struttura allocata.
Nella funzione main:
- Utilizzare la funzione
free()per rilasciare la memoria allocata dopo l'utilizzo.
Soluzione
Grazie per i tuoi commenti!
single