我不能完全理解VB6程序中刚刚发生的事情。这是在Win7-64和Win10上。
我写了一个用于加载和显示4K (3640x2160)图像的Q&D概念证明。每个图像占用24MB内存,因此我“知道”,基于32位进程的2 2GB内存限制,我最多只能加载大约80个图像。
系统有32 to的内存,但我的程序无法访问这些内存...对吗?
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没有问题,需要一点时间,但工作和使用预期的内存。
对于grins,我将nPix增加到100,只是想看看它是如何失败的。但它没有。尝试nPix = 200,然后是300。仍然继续运行,然后消耗了8 8GB的系统内存。而且完全没有问题:
PictureBox.PaintPicture Pix(300)这到底是怎么回事?我使用的是谁的内存,又是如何使用的?
发布于 2019-05-09 21:48:49
我认为这是因为图像是由操作系统本身加载的,并且只返回某种类型的句柄给VB6进程进行操作……
https://stackoverflow.com/questions/42190789
复制相似问题