NoTrace Security Forum

NoTrace Security Forum
Home | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Utenti | Download | cerca | faq | RSS | Security Chat
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Sistemi Operativi
 Linux/Unix
 realloc in C
 Forum Bloccato
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'č:
Autore Discussione Precedente Discussione Discussione Successiva  

bl4ck0ut
Starting Member



11 Messaggi


Inserito il - 18/01/2006 : 10:54:34  Mostra Profilo
Scusate ma avrei un problema con la realloc..
il mio problema e' che devo creare un array di stringhe
dinamicamente: nel senso che inizialmente e' vuoto e ci
aggiungo una stringa alla volta (il numero di stringhe
inizialmente non e' conosciuto)..
La soluzione che mi sembra piu ovvia e' fare una cosa del tipo:

char **newfile;
int i = 0; int n;
do{
newfile = realloc(newfile, (sizeof(char*) * (i+1)));
newfile[i] = calloc(MAXLINE, sizeof(char) );
n = read(STDIN, newfile[i], MAXLINE);
newfile[i][n-1] = 0;
i++;
}while(qualcosa);


Il codice sembra essere ok ma a runtime mi da
segmentation fault sulla realloc, e non so perche'..
qualcuno saprebbe aiutarmi?

ori
Moderatore


Cittā: Verona


2043 Messaggi

Inserito il - 18/01/2006 : 11:17:40  Mostra Profilo
Alla prima esecuzione newfile quanto vale? Nessuno lo sa e con molta probabilita` il valore non e` nel tuo range di indirizzi. Questo spiega il segmentation fault.

Idea alternativa: ti crei una lista in cui ogni elemento ti punta ad un'area di memoria allocata dinamicamente per contenere la singola stringa. Quando hai terminato di caricare le varie stringhe puoi, a tua scelta, allocare un vettore di puntatori della dimensione corretta (che ora conosci) e fare in modo che ogni puntatore faccia riferimento alla stringa corrispondente nella lista.

Mi raccomando, ricordati delle free(void *ptr) prima di terminare il programma .
Torna all'inizio della Pagina

bl4ck0ut
Starting Member



11 Messaggi

Inserito il - 18/01/2006 : 11:40:30  Mostra Profilo
Grazie per il consiglio ma ho risolto semplicemente inizializzando newfile a NULL :) ..grazie cmq!
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  

 Forum Bloccato
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
NoTrace Security Forum
© Nazzareno Schettino
RSS NEWS
Torna all'inizio della Pagina
Pagina generata in 0,16 secondi. TargatoNA | SuperDeeJay | Snitz Forums 2000