c - fread() 的调试断言失败

标签 c

test.bin 的大小为 7,01,760 字节。我试图从这个文件中读取日期作为缓冲区 bufferPointer 中的“短”。

short * bufferPointer=NULL; 
// ==> ANSWER WAS ADDING: bufferPointer = ( short*)malloc(350880); <==
FILE *fp=fopen(" test.bin","rb");
fread(bufferPointer,sizeof(short),350880 ,fp); 
fclose(fp);

我在 fread() 处收到调试断言失败。为什么?

MSVC2010,Windows-7-32 位

最佳答案

您为缓冲区分配了 350880 个字节,但尝试读取 350880 个短裤。尝试

bufferPointer = malloc(350880 * sizeof *bufferPointer);

(请注意,转换 malloc 不是必需的,并且因为它可以隐藏错误而被反对。)

您还应该检查您的 malloc、fopen 和 fread 调用是否有错误。

关于c - fread() 的调试断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356036/

相关文章:

c - 段错误: C-Program migrating from HPUX to Linux

c - 程序不会停止扫描

c++ - 转换/旋转字节数组中的位

c - 按位除法舍入到最接近的零

c - 在夏天练习C

c - 重复调用 C 函数会导致 R - 如何分配内存?

c - C中数据的抛物线过滤

c - 管理双回合游戏

c - dup2/dup - 为什么我需要复制文件描述符?

c - 如何链接 glibc 的 iconv 实现?