我无法完全理解 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/