【发布时间】:2014-01-20 19:56:43
【问题描述】:
我正在分配一个相当大的、大约 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)
对于前者,应用程序(忽略启动时间)似乎运行得稍微快了一点。
忽略失败的分配,每种方法的优缺点是什么?
【问题讨论】:
-
这么大的数据你放了什么?
标签: c linux gcc mmap static-allocation