我使用fstat來獲取文件大小。我想用這個大小聲明一個數組,然後用另一個fstat改變大小並重新使用相同的數組。例如:c基於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陣列,我必須聲明一個新的。但是,如果我想重新使用不同大小的相同數組,我該怎麼做?
謝謝!
編輯:
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);
}
,但現在我有一個段錯誤:(
任何指示什麼segfaults? (gdb ?,'printf'?) – 2012-07-09 09:59:01
我會嘗試用gdb! :) – polslinux 2012-07-09 10:01:32
我解決了使用雙malloc!所以malloc-free-malloc-free :) – polslinux 2012-07-09 10:11:44