DOMANDA Programmazione in C, come si dealloca dalla memoria una costante stringa?

Pubblicità

nome non in uso

Nuovo Utente
Messaggi
18
Reazioni
0
Punteggio
22
per esempio una scrittura del tipo:

char* pt="stringa in memoria";
pt=NULL;

la stringa "stringa in memoria" continua a restare in memoria anche dopo che non è più puntata da niente? lo spazio di memoria che occupa la stringa resta vincolato? se si si può deallocare? grazie.
 
Beh, tutte le stringhe che scrivi in un programma rimangono nel programma stesso, quindi occupano memoria e non possono essere deallocate, fanno parte della parte "dati" del eseguibile. E' questo che volevi sapere?
 
Aggiungo qualcosa pure io.

per esempio una scrittura del tipo:

char* pt="stringa in memoria";
pt=NULL;

la stringa "stringa in memoria" continua a restare in memoria anche dopo che non è più puntata da niente? lo spazio di memoria che occupa la stringa resta vincolato? se si si può deallocare? grazie.

Dipende dove dichiari quella stringa. Se la dichiari in una funzione, verrà deallocata dallo stack al termine della funzione stessa. Se è dichiarata altrove (globale) farà parte del blocco dati, e non le puoi deallocare, come dice Andretti sopra.
La deallocazione è possibile se l'allocazione è dinamica, utilizzando malloc/calloc (o comunque una chiamata all'API dell'OS).
 
Aggiungo qualcosa pure io.



Dipende dove dichiari quella stringa. Se la dichiari in una funzione, verrà deallocata dallo stack al termine della funzione stessa. ...
No, le costanti stringhe sono sempre presenti nella memoria dati, quindi non si riuscirà mai a deallocarle. Infatti si usa il "free" solo in congiunzione con un "malloc" (e simili istruzioni che allocano dinamicamente la memoria nel heap del programma).
Piuttosto c’è una bella differenza tra queste Due istruzioni:
Codice:
char *p = “blah blah”;
char p[] = “blah blah”;
Ve lo lascio come esercizio :)
 
E' ciò che ho scritto veramente... :)

La deallocazione è possibile se l'allocazione è dinamica, utilizzando malloc/calloc (o comunque una chiamata all'API dell'OS).

Con la frase sopra facevo riferimento a ciò che viene dichiarato in una funzione.
 
Pubblicità
Pubblicità
Indietro
Top