0

I am trying to initialize an array of pointers but when i try to print it in the main it don't work, It shows an segmentation fault but if i try to print it in the same method it do print

here is my code

typedef struct File
{
    char fileName[Max_FILE_NAME_LENGTH];
    char *listOfFiles[];
}File;

File dependencies[MAXIMUM_FILES];

void findListOfFiles(char *line, int i, int currDepend)
{
int idx=0,numOfFiles=0;;
while(line[i]!='\n')
{
    char *name=(char *)malloc(65*sizeof(char));
    while(line[i]!=',' && line[i]!='\n')
    {
        name[idx]=line[i];
        i++;
        idx++;
    }
    name[idx]='\0';
    dependencies[currDepend].listOfFiles[numOfFiles]=name;
    printf("%s+", dependencies[currDepend].listOfFiles[numOfFiles]);
    if(line[i]=='\n')
    {
        if(name){
            free(name);
            name=NULL;
        }
        break;
    }
    if(name){
        free(name);
        name=NULL;
    }
    numOfFiles++;
    i++;
    idx=0;
}
}
4

1 回答 1

1

您实际上从未在listOfFiles任何地方为成员分配空间。这意味着该数组的大小基本上为零,因此所有写入其中的任何条目都将超出范围。

如果你想dependencies成为一个全局变量,你必须为listOfFiles数组设置一个固定的大小,或者使它成为一个指针并在需要时分配/重新分配。

此外,在将指针分配给name数组后,您将free分配内存,这意味着数组中的指针现在指向已释放的内存。

于 2013-11-10T19:54:57.390 回答