系统如何管理虚拟内存?

solarsoft 2001-02-23 12:11:00
Windows函数GlobalMemoryStatus可用于当前内存状态的动态信息。
哪我应该如何来管理呢?也可到我的站点http://solarsoft.go.163.com
...全文
175 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
philiploo 2001-02-23
  • 打赏
  • 举报
回复
不清楚你的管理是什么意思,一般来说有三种方法:
1.保留地址空间:
LPVOID VirtualAlloc(LPVOID lpAddress,DWORD cbSize,DWORD fdwAllocationType,DWORD fdwProtect);
lpAddress为保留内存地址,可以为NULL(系统自动分配)
cbSize保留大小
fdwAllocationType 指出保留(MEM_RESERVE)还是提交(MEM_COMMIT)内存
fdwProtect 保留属性:PAGE_NOACCESS,PAGE_READWRITE,PAGE_READONLY,PAGE_EXECUTE,PAGE_EXECUTE_READ,PAGE_EXECUTE_READWRITE
释放用BOOL VirtualFree(LPVOID lpAddress,DWORD cbSize,DWORD fdwFreeType)
全部释放cbSize=0,fdwFreeType为MEM_RELEASE; 部分释放以整页为单位,lpAddress所在页为开始,cbSize为大小,fdwFreeType为MEM_DECOMMIT
2.内存映象文件
通过下列函数实现
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
// pointer to security attributes
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to
// copy
);


HANDLE CreateFileMapping(
HANDLE hFile, // handle to file to map
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
// optional security attributes
DWORD flProtect, // protection for mapping object
DWORD dwMaximumSizeHigh, // high-order 32 bits of object size
DWORD dwMaximumSizeLow, // low-order 32 bits of object size
LPCTSTR lpName // name of file-mapping object
);

LPVOID MapViewOfFile(
HANDLE hFileMappingObject, // file-mapping object to map into
// address space
DWORD dwDesiredAccess, // access mode
DWORD dwFileOffsetHigh, // high-order 32 bits of file offset
DWORD dwFileOffsetLow, // low-order 32 bits of file offset
DWORD dwNumberOfBytesToMap // number of bytes to map
);

BOOL UnmapViewOfFile(
LPCVOID lpBaseAddress // address where mapped view begins
);

BOOL FlushViewOfFile(
LPCVOID lpBaseAddress, // start address of byte range to flush
DWORD dwNumberOfBytesToFlush // number of bytes in range
);


详细说明可参看msdn

3.Win32堆

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧