我正在使用 Visual Studio 2010,在以下代码片段中,fseek 之后的 if 语句出现异常。
int load_filenew(char *filename, char **buffer)
{
int size = 0;
FILE *fp = 0;
fp = fopen(filename, "rb");
if (!fp)
{
printf(" fopen failed.\n");
return 1;
}
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fseek(fp, 0, SEEK_SET);
if (size)
{
if (*buffer)
{
free(*buffer);
}
*buffer = 0;
*buffer = (char *)malloc(size + 1);
if (!*buffer)
{
printf(" malloc failed.\n");
fclose(fp);
return 3;
}
memset(*buffer, 0, size + 1);
fread(*buffer, size, 1, fp);
(*buffer)[size] = '\0';
}
else
{
fclose(fp);
return 2;
}
fclose(fp);
return 0;
}
此函数在应用程序中被多次调用,但有时在加载文件时会在下一行引发未处理的异常
//exception code
if (size)
{
if (*buffer)
请帮忙——可能的原因是什么以及如何解决?