我正在分配一个相当大的,大约 100GB 的内存块。确切的大小在编译时总是已知的。
我应该静态分配吗?
static char data[DATA_SIZE];
还是使用mmap?
data = mmap(NULL, DATA_SIZE, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_LOCKED|MAP_UNINITIALIZED, -1, 0)
对于前者,应用程序(忽略启动时间)似乎运行得稍微快一些。
忽略失败的分配,每种方法的优缺点是什么?