最近看到一款软件《雪狐桌面精灵》,这个软件有一个功能,是把自己执行程序的内存全部转移到虚拟内存中去,请问在MFC下如何才能做到这一点,一般来讲用API VirtualAlloc可以对虚拟内存进行申请分配,但是这样只能达到程序自己需要用的数据分配到虚拟内存里,但是光是一个MFC向导生成出来的对话框程序,使用Release发布,执行起来都需要占用至少3MB左右的内存,而前面提到的那个软件,可以让内存占用保持在680KB左右,这是如何做到的?

解决方案 »

  1.   

    实际上MFC的代码大家都共享的,总共占用的内存并不是每个程序占用内存之和
      

  2.   

    VC++界面菜单-->project-->setting-->link-->stack alloc里面可以设置总内存和物理内存。
      

  3.   

    但是我提到的那个软件在任务管理器里面看到内存占用是680KB左右,而MFC的程序编译完以后运行起来就是3MB左右,而且他可以进行动态的切换,也就是说可以把所有的数据完全再搬到内存中去,这样他的内存占用大概是7MB左右,如果再切换为虚拟内存模式就是占用680KB左右,这样是如何做到的呢
      

  4.   

    SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1);