【发布时间】:2011-08-12 16:11:17
【问题描述】:
伙计们,我想编译一个本机 64 位应用程序。我确实以正确的方式配置了 VS,它可以工作,但显然它是交叉编译,而不是在本机 amd64 模式下编译,因为如果我尝试分配超过 1 000 000 000 的向量,我的程序仍然会冻结。
现在,我的问题是我必须在哪里放置额外的“amd64”(如此处所述http://msdn.microsoft.com/en-us/library/x4d2c09s%28VS.80%29.aspx)。 我在属性页 > 调试 > 命令参数下尝试过,但没有帮助。
哦,别对我太苛刻,我对这个话题有点陌生。
提前致谢。
(Windows 7 Professional 上的 Visual Studio 2010 终极版。)
编辑:给博
我不知道我在发布模式下运行它,我确实收到“...exe 已停止工作”消息。此外,我正在添加带有后推的元素,它适用于 1 000 000 000 个元素,但不适用于 1 100 000 000 个。
编辑2:
感谢您的提示。我实际上使用的是2010版本的页面,我只是发布了错误的链接。 我也确实按照这些网站上的说明进行操作,并且正如我所写,它可以工作,直到我使用超过 4 GB 的 RAM。 我试图运行一个使用超过 2 GB 内存的 32 位应用程序,当然没有用。 然后我按照页面上的说明进行操作 -> 我能够使用 4 GB 运行该应用程序。 现在,我想分配超过 4gb -> 它没有用。 为什么我认为它必须与编译有关,因为你可以设置一个特定的标志,使 32 位应用程序能够使用 4gb,我认为这就是交叉编译选项的作用。 -> 使其“以某种方式”兼容 32 位和 64 位。
EDIT3:我确实在 win7 64x 上安装了 8gb
EDIT4:对不起,没有评论单个帖子,但如果我点击“评论”,什么也没有发生。 但我刚刚发现了一些东西。编译器的问题可能不是问题,因为我可以成功分配 2 个 vecs,其中一个大小为 500 000 000,另一个大小为 700 000 000。 有其他人知道为什么我不能分配大于 4gb 的向量吗?
【问题讨论】:
-
你的系统有多少物理内存?
-
如果您通过评论来回答答案,而不是通过对原始问题添加编辑来回复答案,那么这个问题会更容易理解。很难说你在回复谁/回复什么。
-
我们需要查看代码。
-
您的代码无疑会死于 std::bad_alloc 异常。在 msvc 内存模型中,x64 上的单个分配仍然限制为 2GB。更大的分配在技术上是可行的,但会使数组索引非常慢。
标签: c++ visual-studio-2010 64-bit x86-64