segmentation fault

Post Reply
Message
Author
blubb

segmentation fault

#1 Post by blubb »

hi,

folgendes problem:

Code: Select all

char *browser(char *that_dir)
{
   DIR *directory = opendir(that_dir);
   if(!directory)
     return 0;

   struct dirent *entry;
   int anz = 0;
   char **files = NULL;

   while((entry = readdir(directory)))
     {
        if(!strncmp(".", entry->d_name, 1))
          continue;

        realloc(files, sizeof(files)+1);
        //realloc(files[anz], strlen(entry->d_name));
        files[anz] = (char *)malloc(strlen(entry->d_name)*sizeof(char));
        strcpy(files[anz], entry->d_name);
        anz++;

     }
ich versteh nich wieso das segfaultet :/

lg

blubb

kanonenfutter
Posts: 266
Joined: 10. Sep 2004 14:37
Contact:

#2 Post by kanonenfutter »

die realloc-zeile muss so aussehen:

Code: Select all

files = (char**) realloc(files, sizeof(*files) + sizeof(char*));
dann funktionierts.
Last edited by kanonenfutter on 13. Jan 2005 21:00, edited 1 time in total.
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/

kanonenfutter
Posts: 266
Joined: 10. Sep 2004 14:37
Contact:

#3 Post by kanonenfutter »

hmm, es funktioniert so zwar, aber ich frage mich selber, warum eigentlich.
sizeof (*files) liefert immer nur die grösse eines einzelnen/des ersten array-elements (also 4) und nicht die tatsächliche grösse des arrays.
mal nachdenken....
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach http://www.antihuth.de/

P. Ointer

#4 Post by P. Ointer »

Code: Select all

char **files = NULL; 
ein Zeiger auf einen Zeiger auf ein Zeichen -- Da kann ich beim besten Willen auch nichts von array erkennen!

Post Reply