Win32的虚拟内存分配函数
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的虚拟内存分配函数相关推荐
- Win32 堆内存分配示例
一 程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区 ...
- Win32下内存分配简单示例 - 使用CFree
Windows下内存分配示例:win7系统:CFree 5.0: 先用Win32的VirtualAlloc函数:再用标准C的malloc: 运行结果: #include <windows.h&g ...
- Linux内核中内存分配函数
1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...
- C语言动态内存管理和动态内存分配函数
给变量分配内存空间可分为静态内存分配和动态内存分配. 静态内存分配属于编译时给变量分配的空间,动态分配属于在程序运行时给变量分配的空间 静态分配属于栈分配,动态分配属于堆分配 运行效率上,静态内存比动 ...
- 替换libc中的内存分配函数
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 本文介绍如何替换glibc中的内存分配函数为自定义的内存分配函数的方法,可以方便调试内存分配,和查找内存管理错误而产生 ...
- 【C/C++】内存分配函数:malloc,calloc,realloc,_alloca
[C/C++]内存分配函数:malloc,calloc,realloc,_alloca malloc: 原型:extern void *malloc(unsigned int num_bytes); ...
- 内存分配函数 ExAllocatePool ExAllocatePoolWithTag
如同C里面的malloc一样,内核模式下的ExAllocatePool也是非常重要的.但是一说到ExAllocatePool函数就不得不提ExAllocatePoolWithTag函数.对比一下两个函 ...
- 内存分配函数 malloc、realloc、calloc
C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1) malloc 函数原型如下: void * m ...
- linux内核函数kmalloc,Linux_Linux平台上几个常见内核内存分配函数,* kmallocPrototype:#incl - phpStudy...
Linux平台上几个常见内核内存分配函数 * kmalloc Prototype: #include void *kmalloc(size_t size, int flags); Kmalloc分配一 ...
最新文章
- 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)
- 我们准备在网关中支持GrahpQL了
- WIN10 右键 powershell 修改
- 虚拟机安装Ubuntu14.04打开FireFox提示Server not found
- Unity中的值传递与引用传递
- ngnix 负载均衡原理
- 电芯容量在前期循环中容量增加_安普瑞斯王岑博士:安普瑞斯的硅负极材料在高能量密度电池中的应用进展...
- 2.SpringBoot的入门例子
- python创意小作品-python turtle库的几个小demo
- android dialog转layout
- 转:Android应用Icon大小在不同分辨率下定义
- 每天一道剑指offer-数值的整数次方
- java实现中文转拼音_Java 实现中文-拼音转换
- 爱心的数学函数方程_什么函数图像能构成爱心?
- [原创] vlc视频播放插件使用总结
- Android 运行时权限
- 一个更高效的RACK机制
- 客户端Connection reset by peer怎么办?——可能只是服务端挂了
- element上传图片至最大限制数量时,隐藏上传按钮
- Android ANR日志分析进行曲