gpt4 book ai didi

Calloc 导致段错误但不是 malloc

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:12 26 4
gpt4 key购买 nike

我正在实现一个环形缓冲区,在一种方法中,我在循环中从文件中读取 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);
}

最佳答案

malloccalloc的唯一区别是calloc将内存初始化为0,而malloc不'初始化它。

所以错误可能是您正在访问某处一些被 calloc 覆盖为 0 的数据。我建议您检查 b 缓冲区或其他一些动态分配的数据的生命周期。

关于Calloc 导致段错误但不是 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com