我正在实现一个环形缓冲区,在一种方法中,我CHUNKSIZE
从一个循环中的文件中读取字节并将指针插入到环形缓冲区中。
我在一个while循环中这样做。该代码可以正常工作,malloc
但calloc
会在循环结束时导致段错误。这真的很神秘。
这是代码:
fpos_t position = 0;
fpos_t file_size = 0;
fseek(file, 0L, SEEK_END);
fgetpos(file,&file_size);
fseek(file, 0L, SEEK_SET);
char* b = calloc(CHUNKSIZE,sizeof(char));
// char* b = malloc(sizeof(char)*CHUNKSIZE);
while(fread(b,1,CHUNKSIZE,file)){
deposit(reader_buf,b);
// This always changes the cursor position by -150 to create overlapping chunks
fseek(file,-150,SEEK_CUR);
b = calloc(CHUNKSIZE,sizeof(char));
// b = malloc(sizeof(char)*CHUNKSIZE);
}