C语言 - Windows触发了一个断点

时间:2016-05-14 07:44:19

标签: c visual-studio-2010 heap-corruption

我在Visual Studio C ++中编写C语言。

在第一次调用此函数时没有问题。它使所有进程在第二次调用VS时给出“Windows已触发断点”错误。 但是,我在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...
}

1 个答案:

答案 0 :(得分:1)

在这里你分配一个缓冲区:

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