Differenza tra allocazione statica e memoria dinamica

Differenza chiave - Allocazione memoria statica o dinamica
 

Nella programmazione, è necessario memorizzare i dati di calcolo. Questi dati sono archiviati in memoria. Le posizioni di memoria per la memorizzazione dei dati nella programmazione del computer sono note come variabili. Le variabili hanno un tipo di dati specifico. Pertanto, la memoria viene allocata per eseguire i programmi. La memoria può essere allocata in due modi. Sono allocazione di memoria statica e allocazione di memoria dinamica. Nell'allocazione della memoria statica, una volta allocata la memoria, non può essere modificata. La memoria non è riutilizzabile. Ma nell'allocazione della memoria dinamica, una volta allocata la memoria, può essere modificata. Il differenza fondamentale tra l'allocazione di memoria statica e dinamica è quella nell'allocazione della memoria statica una volta allocata la memoria, la dimensione della memoria è fissa mentre nell'allocazione della memoria dinamica, una volta allocata la memoria, è possibile modificare la dimensione della memoria.

CONTENUTO

1. Panoramica e differenza chiave
2. Cos'è l'allocazione statica della memoria
3. Cos'è l'allocazione dinamica della memoria
4. Somiglianze tra allocazione di memoria statica e dinamica
5. Confronto affiancato - Statico contro allocazione dinamica della memoria in forma tabulare
6. Sommario

Cos'è l'allocazione statica della memoria?

Nell'allocazione della memoria statica, la memoria allocata è fissa. Una volta allocata la memoria, non può essere modificata. La memoria non può essere aumentata o diminuita. Ad esempio, in linguaggio C se il programmatore scrive int x, il che significa che la variabile può memorizzare un valore intero. Il numero di byte dipende dal computer. Possono esserci anche array. Per esempio. int x [5]; Questa x è una matrice che può memorizzare una sequenza di dati che sono dello stesso tipo. Può memorizzare cinque elementi interi. Non può memorizzare più di cinque elementi. In Java, un array può essere creato come, int arr [] = new int [5]; L'array 'arr' può memorizzare 5 valori interi e non può memorizzare più di quello.

Figura 01: metodi di allocazione della memoria

Nell'allocazione della memoria statica, una volta allocate le variabili, rimangono permanenti. Dopo l'allocazione iniziale, il programmatore non può ridimensionare la memoria. Se il programmatore ha assegnato un array in grado di memorizzare 10 elementi, non è possibile memorizzare valori superiori all'importo specificato. Se inizialmente il programmatore ha assegnato un array che può contenere 10 elementi, ma ha solo bisogno di 5 elementi, allora c'è uno spreco di memoria. Quella memoria non è più necessaria, ma non è nemmeno possibile riutilizzare la memoria. L'allocazione della memoria statica è fissa, ma l'implementazione è semplice e facile ed è anche veloce.

Cos'è l'allocazione dinamica della memoria?

A volte è necessario cambiare la dimensione della memoria. Quindi la memoria può essere allocata dinamicamente. A seconda degli inserimenti e delle eliminazioni degli elementi di dati, la memoria può aumentare o diminuire. È noto come allocazione dinamica della memoria.

Nel linguaggio C, il file di intestazione stdlib.h, ci sono quattro funzioni per l'allocazione dinamica della memoria. Sono calloc, malloc, realloc e gratuiti. La funzione malloc () assegna una dimensione richiesta di byte e restituisce un puntatore void, puntando il primo byte della memoria allocata. La funzione calloc () alloca una dimensione richiesta di byte e li inizializza a zero. Quindi restituisce un puntatore vuoto alla memoria. La funzione free () viene utilizzata per riallocare la memoria allocata. E la funzione realloc può modificare la memoria allocata in precedenza. Dopo aver assegnato memoria tramite calloc o malloc, la dimensione della memoria è fissa, ma possono essere aumentate o diminuite utilizzando la funzione realloc. In Java, le raccolte possono essere utilizzate per l'allocazione dinamica della memoria.

Il vantaggio principale dell'allocazione dinamica della memoria è che salva la memoria. Il programmatore può allocare memoria o rilasciare la memoria secondo necessità. La memoria può essere riallocata durante l'esecuzione e può liberare la memoria quando non è richiesta. Anche l'allocazione dinamica della memoria è efficiente rispetto all'allocazione della memoria statica. Uno svantaggio è che l'implementazione dell'allocazione dinamica della memoria è complessa.

Quali sono le somiglianze tra allocazione di memoria statica e dinamica?

  • Entrambi sono meccanismi di allocazione della memoria.
  • Entrambi dovrebbero essere implementati dal programmatore manualmente.

Qual è la differenza tra allocazione statica e memoria dinamica?

Statica vs allocazione dinamica della memoria

L'allocazione della memoria statica è un metodo di allocazione della memoria e una volta assegnata la memoria, è fissa. L'allocazione dinamica della memoria è un metodo di allocazione della memoria e una volta allocata la memoria, può essere modificata.
 Modifica
Nell'allocazione della memoria statica, non è possibile ridimensionare dopo l'allocazione iniziale. Nell'allocazione della memoria dinamica, la memoria può essere minimizzata o ingrandita di conseguenza.
Implementazione
L'allocazione statica della memoria è facile da implementare. L'allocazione dinamica della memoria è complessa da implementare.
 Velocità
Nella memoria statica, l'esecuzione dell'allocazione è più veloce dell'allocazione della memoria dinamica. Nella memoria dinamica, l'esecuzione dell'allocazione è più lenta dell'allocazione della memoria statica.
Utilizzo della memoria
Nell'allocazione della memoria statica, non è possibile riutilizzare la memoria non utilizzata. L'allocazione dinamica della memoria consente di riutilizzare la memoria. Il programmatore può allocare più memoria quando richiesto. Può liberare la memoria quando è necessario.

Sommario - Statica vs allocazione dinamica della memoria

Nella programmazione, l'allocazione della memoria statica e l'allocazione dinamica della memoria sono due meccanismi di allocazione della memoria. La differenza tra l'allocazione di memoria statica e dinamica è che nell'allocazione della memoria statica una volta allocata la memoria, la dimensione della memoria è fissa mentre nell'allocazione della memoria dinamica, una volta allocata la memoria, è possibile modificare la dimensione della memoria. Il programmatore può decidere se la memoria deve essere statica o dinamica a seconda dell'applicazione.

Scarica il PDF di Static vs Dynamic Memory Allocation

È possibile scaricare la versione PDF di questo articolo e utilizzarlo per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui: Differenza tra allocazione statica e memoria dinamica

Riferimento:

1. Kayal, Somnath. "SOMNATH KAYAL." Differenza tra allocazione statica della memoria e allocazione dinamica della memoria, 1 gennaio 1970. Disponibile qui 
2.tutorialspoint.com. "Array in C." Il punto. Disponibile qui 
3.nareshtechnologies. Memoria statica vs Memoria dinamica | C Language Tutorial, Naresh i Technologies, 19 settembre 2016. Disponibile qui