繁体   English   中英

C-初始化指针数组

[英]C - Initializing an array of pointers

我正在尝试初始化一个指针数组,但是当我尝试在主要位置打印它时,它不起作用,它显示了分段错误,但是如果我尝试以相同的方法进行打印,则会执行打印

这是我的代码

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;
}
}

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

如果希望dependencies是全局变量,则必须为listOfFiles数组设置固定大小,或者使其成为指针到指针的指针,并在需要时进行分配/重新分配。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM