我试图不断地从不同的文件将数据读入 unsigned char* 类型的缓冲区。但是,在读取下一个文件之前,我似乎无法将缓冲区设置为 NULL。
这里只是相关的代码:
#include <stdio.h>
#include <fstream>
int
main (int argc, char** argv) {
FILE* dataFile = fopen("C:\\File1.txt", "rb");
unsigned char *buffer = NULL;
buffer = (unsigned char*)malloc(1000);
fread(buffer,1,1000,dataFile);
fclose(dataFile);
dataFile = fopen("C:\\File2.txt", "rb");
buffer = NULL;
fread(buffer,1,1000,dataFile);
fclose(dataFile);
system("pause");
return 0;
}
我遇到的错误是在此行的第二次出现:fread(buffer,1,1000,dataFile);
我得到的错误是:
调试断言失败!表达式:(缓冲区!= NULL)
它指向 fread.c 的第 147 行,基本上是:
/* validation */ _VALIDATE_RETURN((buffer != NULL), EINVAL, 0); if (stream == NULL || num > (SIZE_MAX / elementSize)) { if (bufferSize != SIZE_MAX) { memset(buffer, _BUFFER_FILL_PATTERN, bufferSize); } _VALIDATE_RETURN((stream != NULL), EINVAL, 0); _VALIDATE_RETURN(num <= (SIZE_MAX / elementSize), EINVAL, 0); }
我在谷歌上找到了将缓冲区指针指向 NULL 的方法,并尝试了各种建议,但似乎都没有奏效。任何人都可以澄清将其设置为 NULL 的正确方法是什么?