Win32的虚拟内存分配函数

原创 2005年05月31日 16:03:00
  1. Win32的虚拟内存分配函数

虚拟内存API是其他API的基础。虚拟内存API以页为最小分配单位,X86上页长度为4KB,可以用GetSystemInfo函数提取页长度。虚拟内存分配函数包括以下函数:

LPVOID VirtualAlloc(LPVOID lpvAddress,

DWORD cbSize,

DWORD fdwAllocationType,

DWORD fdwProtect);

该函数用来分配一定范围的虚拟页。参数1指定起始地址;参数2指定分配内存的长度;参数3指定分配方式,取值MEM_COMMINT或者MEM_RESERVE;参数4指定控制访问本次分配的内存的标识,取值为PAGE_READONLY、PAGE_READWRITE或者PAGE_NOACCESS。

LPVOID VirtualAllocEx(HANDLE process,

LPVOID lpvAddress,

DWORD cbSize,

DWORD fdwAllocationType,

DWORD fdwProtect);

该函数功能类似于VirtualAlloc,但是允许指定进程process。VirtaulFree、VirtualProtect、VirtualQuery都有对应的扩展函数。

BOOL VirtualFree(LPVOID lpvAddress,

DWORD dwSize,

DWORD dwFreeType);

该函数用来回收或者释放分配的虚拟内存。参数1指定希望回收或者释放内存的基地址;如果是回收,参数2可以指向虚拟地址范围内的任何地方,如果是释放,参数2必须是VirtualAlloc返回的地址;参数3指定是否释放或者回收内存,取值为MEM_DECOMMINT或者MEM_RELEASE。

BOOL VirtualProtect(LPVOID lpvAddress,

DWORD cbSize,

DWORD fdwNewProtect,

PDWORD pfdwOldProtect);

该函数用来把已经分配的页改变成保护页。参数1指定分配页的基地址;参数2指定保护页的长度;参数3指定页的保护属性,取值PAGE_READ、PAGE_WRITE、PAGE_READWRITE等等;参数4用来返回原来的保护属性。

在Win32中管理虚拟内存——举例

以下两个编程例子: 整块方式使用虚拟内存页 分块方式使用虚拟内存页 (一)整块方式,分以下两步 (1)预留+提交 (2)释放 #include #include ...
  • pony12
  • pony12
  • 2013年03月15日 14:56
  • 891

【win32】day13-地址空间/地址映射/虚拟内存/堆内存/内存映射文件

地址空间 1 地址空间 一个程序最大的寻址范围。对于Win32操作系统 最大的寻址范围是2的32次方,0-0xFFFFFFFF。 这个寻址范围由CPU决定。CPU的寻址范围越大, 程序难度降低。  ...
  • waldmer
  • waldmer
  • 2016年10月18日 20:22
  • 796

虚拟内存分配示例的资源

  • 2010年07月01日 13:43
  • 64KB
  • 下载

虚拟内存分配模拟程序

  • 2016年11月21日 22:28
  • 51KB
  • 下载

进程虚拟内存分配表

进程的虚拟地址空间,堆栈、堆、数据段、代码段 上图是进程的虚拟地址空间示意图。 堆栈段:   1. 为函数内部的局部变量提供存储空间。   2. 进行函数调用时,存储“过程活动记录”。...

windows下的虚拟内存分配分析

让我们从原始的进程创建开始分析吧。当进程创建后,操作系统给该进程分配4GB的虚拟地址空间,这部分虚拟内存是你的应用程序看的到的区域(注意很大一部分是不能访问的,比如:内核区域,这部分加载了操作系统中的...

【linux kernel】虚拟内存分配

一、用户空间虚拟内存的分配 【接口】 1)mmap()函数 2)malloc()函数 1.mmap() ->sys_mmap() //sys.c ->sys_mmap_pgoff(...

GNU C Library 3 Virtual Memory Allocation And Paging 虚拟内存分配和页面调度——摘要

文档地址:https://www.gnu.org/software/libc/manual/html_node/Memory.html#Memory   3 虚拟内存分配和分页   3.1 进...

虚拟内存分配和管理接口(VM allocation interfaces)

关于虚拟内存的分配和管理(Virtual Memory, VM)大概了解一下Unix系统中内存分配接口(memory allocation interfaces in Unix systems),这里...

全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存

本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win32的虚拟内存分配函数
举报原因:
原因补充:

(最多只允许输入30个字)