无法在vc++mfc应用程序中分配1.5GB内存



我有用VS2010编写的MFC C++应用程序。当我尝试使用分配大小为"185000000"的双数组时

  1. malloc:返回NULL
  2. new运算符:抛出CMemoryException

但是当我用c++编写独立的win32控制台应用程序时,如下所示:

double *ptr = NULL;
ptr = new double[185000000];

它运行良好,ProcessExplorer应用程序显示了约1411MB的内存。

我的MFC应用程序添加了GUI和许多库,用于安捷伦电表和NI-6255电表电压测量。

以下链接基本解决了问题:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

在x64位系统上,32位程序可以达到2GB的内存。在这个限制中,如果加载了额外的DLL,那么内存就会被分割,并且连续的地址空间不可用。因此1.5GB分配失败。

在vs项目设置中启用大地址空间标志,它可以达到4GB。

除此之外,程序需要用64位进行构建。

相关内容

  • 没有找到相关文章

最新更新