繁体   English   中英

如果其他程序在64位Windows中使用过多,是否确实32bit程序将内存不足?

[英]Is it true that 32Bit program will be out of memory, if other programs use too much, in 64bit windows?

我正在开发32位应用程序,但出现内存不足错误。

而且我注意到我的Visual Studio和一个插件(其他应用程序也)使用了太多的内存,大约4或5 GB。

因此,我怀疑这些程序会耗尽我的程序能够找到可用内存的所有内存地址。

我想32位只能使用前4 GB,而其他内存则根本不能使用。

我不知道我是否正确,否则我会寻找其他答案,例如我的代码中有错误。

您的声明

我想32bit只能使用前4 GB字节,否则根本就不能使用。

肯定是不正确的。 在64位操作系统中,由于虚拟内存到物理内存的转换表为64位,因此所有应用程序都可以使用所有内存,而不管其位数是多少。

某些真正古老的硬件可能不允许DMA寻址超过4GB的地址,但我真的希望现在大部分都在垃圾场中。

如果整个系统的内存不足,它将或多或少地同等地影响所有应用程序。

但是,默认情况下,32位应用程序只能使用虚拟地址范围的较低2GB(尽管如上所述,这2GB可以放置在物理内存中的任何位置,如上所述,借助64位转换表)。 您可以通过在链接命令中使用/LARGEADDRESSAWARE将其扩展到将近4GB(在32位操作系统中为3GB,在这种情况下受/ 3GB引导标志的影响)-这只是告诉操作系统您的应用程序将“理解”地址可以是负数,因此可以在2GB以上的地址上正常运行。

任何系统都可能因太重的负载而瘫痪。

但是在Windows和任何其他虚拟内存OS的正常使用中,其他程序的内存消耗不会对任何给定的程序执行产生太大影响。

出现内存不足错误是不常见的,但是如果您进行了较大的分配或声明了较大的局部自动变量,则可能会发生此错误。 如果您无法正确地释放不再使用的内存,即程序泄漏内存,也会发生这种情况。 对于64位计算机上的32位程序,不是内存本身已用完,而是程序中的可用地址空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM