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.