Academic Year: 2022-2023 Class: Programmazione Calcolatori (Class) Created: March 23, 2023 Tag: C MOC Type:Lecture


C malloc Function

La funzione malloc() in C serve per allocare dinamicamente la memoria durante l’esecuzione del programma.

  • permette di richiedere una porzione di memoria di dimensioni specifiche e restituisce un puntatore a tale area di memoria.

  • input: intero che e quivale al numero di byte

  • esecuzione: cerca uno spazio in memoria sufficentemente grande

  • output: indirizzo di memoria del primo di questi byte (pointer)

    • in caso d errore (esempio assenza di meoria libera) restituisce un puntatore nullo

la memoria occupata dalla funzione malloc viene riallocata soltanto alla fine del programma o all’infocazione della funzione free

Nota:

Puntatore nullo = NULL

#include <stdio.h>
#include <stdlib.h>
 
int main() {
    int n;
    printf("Inserisci la dimensione dell'array: ");
    scanf("%d", &n);
    int *arr = (int*) malloc(n * sizeof(int));
    if (arr == NULL) {
        printf("Errore: memoria non disponibile\n");
        exit(1);
    }
    for (int i = 0; i < n; i++) {
        arr[i] = i;
    }
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    free(arr);
    return 0;
}

In questo esempio, l’utente inserisce la dimensione dell’array arr che viene poi allocato dinamicamente con malloc(). Successivamente, l’array viene inizializzato con valori crescenti e stampato a schermo. Infine, la memoria allocata viene liberata con free().

Riallocazione della memoria:

  • la memoria occupata dalla funzione malloc viene riallocata soltanto alla fine del programma o manualmente atraverso l’invocazzione della funzione free.

C free Function

la memoria allocata con malloc() deve essere liberata manualmente con la funzione free() quando non serve più, altrimenti si rischia di incorrere in memory leak.