0Pricing
C Academy · Lezione

Allocazione dinamica della memoria

Esplori funzioni come malloc, calloc, realloc e free per gestire dinamicamente la memoria.

Allocazione dinamica della memoria è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 3 lezioni in totale.

Allocazione dinamica della memoria

Allocazione dinamica della memoria

In C, l'allocazione dinamica della memoria consente di allocare memoria durante l'esecuzione invece che in fase di compilazione.

In questa lezione imparerà:

  • Come allocare memoria usando malloc, calloc e realloc.
  • Come liberare la memoria allocata usando free.
  • Come evitare le perdite di memoria.
Allocazione dinamica della memoria — illustrazione 1

Che cos'è l'allocazione dinamica della memoria?

Che cos'è l'allocazione dinamica della memoria?

Normalmente, la memoria per le variabili viene allocata in fase di compilazione.

Con l'allocazione dinamica della memoria, la memoria viene allocata durante l'esecuzione del programma usando funzioni speciali.

Questo è utile per gestire array o strutture di dimensione sconosciuta in fase di compilazione.

Allocazione della memoria con malloc()

Allocazione della memoria con malloc()

La funzione malloc alloca la memoria, ma non la inizializza.

Sintassi:

ptr = (int*) malloc(size * sizeof(int));

Restituisce un puntatore alla memoria allocata oppure NULL se l'allocazione non riesce.

Esempio: utilizzo di malloc()

Esempio: utilizzo di malloc()

Questo programma mostra come allocare memoria usando malloc.

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*) malloc(5 * sizeof(int));
    if (ptr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        ptr[i] = i * 10;
        printf("%d ", ptr[i]);
    }
    free(ptr);
    return 0;
}

Allocazione della memoria con calloc()

Allocazione della memoria con calloc()

La funzione calloc alloca la memoria e la inizializza a zero.

Sintassi:

ptr = (int*) calloc(num_elements, sizeof(int));

Restituisce un puntatore alla memoria allocata oppure NULL se l'allocazione non riesce.

Esempio: utilizzo di calloc()

Esempio: utilizzo di calloc()

Questo programma mostra come allocare memoria usando calloc.

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*) calloc(5, sizeof(int));
    if (ptr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", ptr[i]); // All elements initialized to 0
    }
    free(ptr);
    return 0;
}

Riallocazione della memoria con realloc()

Riallocazione della memoria con realloc()

La funzione realloc modifica la dimensione della memoria allocata in precedenza.

Sintassi:

ptr = realloc(ptr, new_size * sizeof(int));

Restituisce un puntatore al nuovo blocco di memoria.

Liberazione della memoria con free()

Liberazione della memoria con free()

La memoria allocata deve essere liberata usando free() per evitare perdite di memoria.

Sintassi:

free(ptr);

Una volta liberata, la memoria non deve più essere accessibile tramite il puntatore.

Riepilogo

Riepilogo

In questa lezione ha imparato:

  • Come allocare memoria usando malloc e calloc.
  • Come riallocare memoria usando realloc.
  • Come liberare la memoria usando free per prevenire le perdite di memoria.

Successivamente, esplorerà gli array di puntatori e i puntatori a funzione in C!

Allocazione dinamica della memoria — illustrazione 10

Domande Frequenti

La lezione «Allocazione dinamica della memoria» è gratuita?

Sì — il testo completo di «Allocazione dinamica della memoria» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 3 lezioni in totale.

Cosa imparerò in «Allocazione dinamica della memoria»?

Esplori funzioni come malloc, calloc, realloc e free per gestire dinamicamente la memoria. Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C Academy?

Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.

Quanto tempo richiede la lezione «Allocazione dinamica della memoria»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C Academy?

Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Introduzione ai puntatori
  2. Allocazione dinamica della memoria
  3. Array di puntatori e puntatori a funzione
← Torna a C Academy