VC++开数组问题.请高手指路了!!!解决一定加到150!!!!谢了!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:34:01
由于我电脑开机后物理内存几乎用完,但程序要求在物理内存中开一个6M的数组,----有没有一种办法将物理内存"腾"出来一部分给开数组用呢??比如一些不必要的进程先"挂起"可不可???

请高手详细解答,不胜感激!!!!!
shore11: 感谢你回答,但这样的数组是不是会写到虚拟内存?如果用到就不行了,会降低运行速度的.

打开工程(我用的是WIN32 CON~~),依次操作菜单如下:Project->Setting->Link,在Category 中选中Output,然后
在Reserve中设定最大值和commit。

注意:reserve默认值为1MB,最小值为4Byte;commit是保留在虚拟内存的页文件里面,它设置的较
大会使数组开辟较大的值,可能增加内存的开销和启动时间
不妨先试一下~~~

应用层的都使用的是分页内存,——都是有可能被交换到硬盘缓冲的。
如果你想你的内存不被交换,必须要申请非分页内存。
不过MFC好像没有提供申请非分页内存的方法噢,除非你写驱动程序,驻留在核心态,才有权限使用非分页内存的。
如果你只是要开辟一块大内存可以,VirtualAlloc , HeapAlloc,GlobalAlloc(旧,慢,不常用了),还有AWE的几个函数 AllocateUserPhysicalPages 等。VirtualAlloc的话要指定正确的参数,具体操作看MSDN的说明好了

内存不同单元的作用由操作系统的指令系统规定好了,进程的优先级也是确定的,由操作系统同一调度,在关闭“所有”你看到的程序的情况下,后台程序获得空闲时间(idle time)可能开始运行,但是如果你的程序需要申请时,该阻塞和挂起的程序都不执行了,你说的方法不可行