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
我正在用 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