C语言-Windows已触发断点

C Language - Windows has triggered a breakpoint

我正在用 Visual Studio C++ 编写 C 语言。

第一次调用这个函数没有问题。它使所有过程但在第二次调用 VS 时给出 "Windows has triggered a breakpoint" 错误。 但是,我编译运行Linux中的代码,没有问题。

void printDataPagePersons(int pageNumber)
{   
    Person* pageofCity = (Person*)malloc(sizeof(Person)* RECORD_COUNT);
    printf("page of city : %d\n",sizeof(*pageofCity));

    FILE* fp;
    fp=fopen("x.dat", "rb");
    fseek(fp, PAGE_SIZE*pageNumber,SEEK_SET);
    fread(pageofCity, PAGE_SIZE,1, fp);
    fclose(fp);
    //OTHER PRINTING PROCESSES...
}

在这里分配一个缓冲区:

Person* pageofCity = (Person*)malloc(sizeof(Person)* RECORD_COUNT);

这是缓冲区的大小:

sizeof(Person)* RECORD_COUNT

然后您在这行代码处将文件中的数据读入该缓冲区:

fread(pageofCity, PAGE_SIZE,1, fp);

您告诉 fread 函数将 PAGE_SIZE 字节读入该缓冲区。

我猜你的问题的原因是这个条件也成立:

PAGE_SIZE > sizeof(Person)* RECORD_COUNT