ciao a tutti.
qualcuno sa dirmi come allocare un' array di puntatori a caratteri e poi riallocare memoria per lo stesso?
grazie.
ciao a tutti.
qualcuno sa dirmi come allocare un' array di puntatori a caratteri e poi riallocare memoria per lo stesso?
grazie.
char c* = (char *)malloc(DIM * sizeof(char));
in questo modo allochi un array di DIM elementi, ognuno dei quali è un carattere; se vuoi usare l'array come una stringa ricorda che l'ultimo carattere deve essere il carattere di fine string '\0', quindi DIM deve essere 1 in più rispetto alla lunghezza della stringa che ci vuoi memorizzare.
Per riallocare lo spazio precedentemente allocato devi usare la funzione realloc:
c = (char *)realloc(c, 100);
cosi ad esempio riallochi c in modo che punti ad una nuova zona di memoria di 100 locazioni; il vecchio contenuto a cui puntava c viene ricopiato nella nuova locazione; se invece non ti interessa avere il vecchio contenuto usi normalemnte la malloc,
Originariamente inviato da anx721
char c* = (char *)malloc(DIM * sizeof(char));
in questo modo allochi un array di DIM elementi, ognuno dei quali è un carattere; se vuoi usare l'array come una stringa ricorda che l'ultimo carattere deve essere il carattere di fine string '\0', quindi DIM deve essere 1 in più rispetto alla lunghezza della stringa che ci vuoi memorizzare.
Per riallocare lo spazio precedentemente allocato devi usare la funzione realloc:
c = (char *)realloc(c, 100);
cosi ad esempio riallochi c in modo che punti ad una nuova zona di memoria di 100 locazioni; il vecchio contenuto a cui puntava c viene ricopiato nella nuova locazione; se invece non ti interessa avere il vecchio contenuto usi normalemnte la malloc,
Un array di puntatori a caratteri:
codice:char** array; array = (char**)malloc(DIM_VETTORE * sizeof(char*)); for (int i = 0; i < DIM; i++) array[i] = (char*)malloc(DIM_UNITARIA * sizeof(char));
Già il primo secondo post è corretto ma ricorda comunque di liberare la memoria quendo non serve più,nessuno ti garantisce che il sistema operativo lo faccia all'uscita del programma (anche se di norma è così).la memoria allocata con malloc va liberata invocando free(puintatore_allocato).edevi liberare sia la memoria per ogni "grappolo" dell'array,sia la emmoria dell'intero array,ed esattamente in questo ordine altrimenti...
Il centro dell'attenzione non è sempre un buon posto in cui trovarsi
Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)