根据这个MSDN页面:
WOW64使32位应用程序能够利用64位内核.因此,32位应用程序可以使用更多的内核句柄和窗口句柄.但是,32位应用程序可能无法在WOW64下创建与在基于x86的系统上本机运行时一样多的线程,因为WOW64为每个线程分配了额外的64位堆栈(通常为512 KB).此外,为WOW64本身及其使用的数据结构保留了一定量的地址空间.保留金额取决于处理器; Intel Itanium上保留的内容多于x64处理器上的内容.
如果应用程序在映像头中设置了IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则每个32位应用程序在WOW64环境中都会收到4 GB的虚拟地址空间.如果未设置IMAGE_FILE_LARGE_ADDRESS_AWARE标志,则每个32位应用程序在WOW64环境中接收2 GB的虚拟地址空间.
如何有效地设置IMAGE_FILE_LARGE_ADDRESS_AWARE国旗在我的2007年德尔福的应用程序,这样我可以让我的32位应用程序WOW64 认识和处理多达内存4GB满?
我用动态数组写了一个32位程序来存储一个未知计数的三角形列表.我目前的策略是估计非常多的三角形,然后在创建所有三角形时修剪列表.在某些情况下,我只会在其他情况下分配一次内存,我需要添加到分配中.
对于一个非常大的数据集,当我的应用程序的内存使用量大约为1.2GB时,我的内存不足,而且由于分配步骤太大,我觉得我可能会破坏内存.
看看FastMM(内存管理器)我看到这些常量会建议其中一个是增量的好大小.
ChunkSize = 64 * 1024;
MaximumSmallBlockSize = 32752;
LargeBlockGranularity = 64 * 1024;
Run Code Online (Sandbox Code Playgroud)
其中一个是增加阵列大小的最佳尺寸吗?
最终这个程序将成为64位,但我们还没有为这一步做好准备.