VB6:次要内存管理之谜

标签 vb6 32bit-64bit ole

我无法完全理解 VB6 程序中刚刚发生的事情。这是在 Win7-64 和 Win10 上。

我写了一个用于加载和显示 4K (3640x2160) 图像的 Q&D 概念证明。每个图像占用 24MB 内存,所以我“知道”,基于 32 位进程的 2GB 内存限制,我最多可以加载大约 80 个图像。

系统有 32GB 的内存,但我的程序无法访问这些...对吗?

Const nPix As Long = 80

Dim Pix(1 To nPix) as stdPicture  ' an OLE construct
For k = 1 to nPix
   Pix(k) = LoadPicture("next in folder")
Next

没问题,需要一些时间,但可以工作并使用预期的内存。

对于咧嘴笑,我将 nPix 增加到 100,只是为了看看它是如何失败的。但它没有。试过 nPix = 200,然后 300。仍然继续,然后吃掉 8GB 的​​系统内存。并且完全没有问题:
PictureBox.PaintPicture Pix(300)

这到底是怎么回事?我在使用谁的内存,以及如何使用?

最佳答案

我认为这是因为图像是由操作系统本身加载的,并且只向 VB6 进程返回某种句柄以进行操作...

关于VB6:次要内存管理之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42190789/

相关文章:

vb6 - 学习和使用Visual Basic 6作为BSIT二年级学生是否可行?

vb6 - 在VB6中将文件写入txt

vb6 - 如何使用 VB6 连接到 LDAP 存储

c# - 是否可以为 Visual Studio 2010 编写 Debugger Visualizer 来显示 64 位 .NET 程序?

python - 当我创建一个 virtualenv 时,python 以 64 位运行,即使在 OSX 中已经设置为 32 位

perl - 获取 Word 文档特定部分中的段落

java - Java 6 是否支持 VB?

performance - double 运算 : 32-bit vs 64-bit machines

excel - 另存为嵌入另一个 Excel 文件的 Excel 文件

delphi - 从 OleVariant 获取 IStream