Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Allocazione Dinamica delle Struct | Lavorare con Puntatori e Struct
Padronanza delle Struct in C

bookAllocazione 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));
Note
Nota

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

main.c

copy
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.

Compito

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:

  1. Utilizzare malloc() per allocare memoria per una struttura Student.
  2. Verificare se l'allocazione è stata effettuata con successo (in caso contrario, restituire NULL).
  3. Assegnare un nome predefinito utilizzando sprintf() — ad esempio, "Alice Johnson".
  4. Assegnare un valore per age, come 21.
  5. Assegnare un valore per gpa, come 3.85.
  6. Restituire il puntatore alla struttura allocata.

Nella funzione main:

  1. Utilizzare la funzione free() per rilasciare la memoria allocata dopo l'utilizzo.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

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?

close

bookAllocazione 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));
Note
Nota

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

main.c

copy
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.

Compito

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:

  1. Utilizzare malloc() per allocare memoria per una struttura Student.
  2. Verificare se l'allocazione è stata effettuata con successo (in caso contrario, restituire NULL).
  3. Assegnare un nome predefinito utilizzando sprintf() — ad esempio, "Alice Johnson".
  4. Assegnare un valore per age, come 21.
  5. Assegnare un valore per gpa, come 3.85.
  6. Restituire il puntatore alla struttura allocata.

Nella funzione main:

  1. Utilizzare la funzione free() per rilasciare la memoria allocata dopo l'utilizzo.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
single

single

some-alt