我使用 fstat 来获取文件大小。我想使用这个大小来声明一个数组,然后用另一个 fstat 更改大小并重新使用同一个数组。例子:
fstat(file1, &fileStat);
fsize = filestat.st_size;
char filebuffer[size-of-file1];
/* do something */
fstat(file2, &fileStat);
fsize = filestat.st_size;
char filebuffer[size-of-file2];
/* do something */
显然我不能重新声明文件缓冲区数组,我必须声明一个新的。但是,如果我想重新使用具有不同大小的相同数组,我该怎么做呢?
谢谢!!
编辑:
filebuffer = malloc(fsize);
if(filebuffer == NULL){
perror("malloc");
onexit(sockd, 0, fd, 4);
}
和
tmpfilebuf = realloc(filebuffer, fsize);
if(tmpfilebuf){
filebuffer = tmpfilebuf;
}
else{
perror("realloc");
free(filebuffer);
onexit(sockd, 0, fd, 4);
}
但现在我有一个段错误:(