Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    25

    [c] Allocazione array di puntatori a carattere

    ciao a tutti.

    qualcuno sa dirmi come allocare un' array di puntatori a caratteri e poi riallocare memoria per lo stesso?

    grazie.

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    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,


  3. #3
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    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));
    Linux user number 403381

    Stop TCPA!

  4. #4
    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.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.