[英]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.