我正在检查我可以在 X64 应用程序上创建多大的数组,我的理解是我可以在 X64 进程上创建大于 2^31 的数组,但是在 VS2010 编译器上出现编译错误,代码如下
const size_t ARRSIZE = size_t(1)<<32;
int main()
{
char *cp = new char[ARRSIZE];
return 0;
}
在目标 x64 平台上的 VS2010 上给出编译器错误“错误 C2148:数组的总大小不得超过 0x7fffffff 字节”,我最多可以创建 (size_t(1)<<32 - 1);
我有链接器-> 高级-> 目标机是 Machinex64。另外 Linker->System->Enable Large Addresses 为 Yes (不确定这是否真的重要)。pc中的分页文件\物理内存在这里重要吗?(我确定它是一个 64 位应用程序,因为如果我删除该行并且只有 char* cp; 它是 8 字节。)我是否缺少一些设置?