我正在尝试使用 mmap 从文件中读取整数矩阵。如果我从 mmap 函数接收它作为 char 指针,我会看到一切正确,但如果我使用 int 指针,它会给我陈旧的数据。使用 char 指针的问题是我需要使用 strtok 或其他东西解析整个字符串并一一获取整数。我的矩阵大小将是 4k * 4k,因此对 sscanf 和 strtok 进行如此多的调用效率不高。请看程序和输出
#define INTS 3 * 3
int main()
{
FILE* in = fopen("int_file", "rb");
int* ints = (int*)mmap(0, INTS * sizeof(int),
PROT_READ, MAP_FILE | MAP_PRIVATE, fileno(in),0);
fclose(in);
for(int i = 0; i < INTS; ++i) {
std::cout << ints[i] << std::endl;
}
munmap(ints, INTS * sizeof(int));
return 0;
}
int_file 的内容是
510 20 30
40 50 60
100 200 10000
输出
540029237
857747506
808716848
540030240
822751286
84097028