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. Win32 堆内存分配示例

    一 程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区 ...

  2. Win32下内存分配简单示例 - 使用CFree

    Windows下内存分配示例:win7系统:CFree 5.0: 先用Win32的VirtualAlloc函数:再用标准C的malloc: 运行结果: #include <windows.h&g ...

  3. Linux内核中内存分配函数

    1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...

  4. C语言动态内存管理和动态内存分配函数

    给变量分配内存空间可分为静态内存分配和动态内存分配. 静态内存分配属于编译时给变量分配的空间,动态分配属于在程序运行时给变量分配的空间 静态分配属于栈分配,动态分配属于堆分配 运行效率上,静态内存比动 ...

  5. 替换libc中的内存分配函数

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 本文介绍如何替换glibc中的内存分配函数为自定义的内存分配函数的方法,可以方便调试内存分配,和查找内存管理错误而产生 ...

  6. 【C/C++】内存分配函数:malloc,calloc,realloc,_alloca

    [C/C++]内存分配函数:malloc,calloc,realloc,_alloca malloc: 原型:extern void *malloc(unsigned int num_bytes); ...

  7. 内存分配函数 ExAllocatePool ExAllocatePoolWithTag

    如同C里面的malloc一样,内核模式下的ExAllocatePool也是非常重要的.但是一说到ExAllocatePool函数就不得不提ExAllocatePoolWithTag函数.对比一下两个函 ...

  8. 内存分配函数 malloc、realloc、calloc

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1) malloc 函数原型如下: void * m ...

  9. linux内核函数kmalloc,Linux_Linux平台上几个常见内核内存分配函数,* kmallocPrototype:#incl - phpStudy...

    Linux平台上几个常见内核内存分配函数 * kmalloc Prototype: #include void *kmalloc(size_t size, int flags); Kmalloc分配一 ...

最新文章

  1. 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)
  2. 我们准备在网关中支持GrahpQL了
  3. WIN10 右键 powershell 修改
  4. 虚拟机安装Ubuntu14.04打开FireFox提示Server not found
  5. Unity中的值传递与引用传递
  6. ngnix 负载均衡原理
  7. 电芯容量在前期循环中容量增加_安普瑞斯王岑博士:安普瑞斯的硅负极材料在高能量密度电池中的应用进展...
  8. 2.SpringBoot的入门例子
  9. python创意小作品-python turtle库的几个小demo
  10. android dialog转layout
  11. 转:Android应用Icon大小在不同分辨率下定义
  12. 每天一道剑指offer-数值的整数次方
  13. java实现中文转拼音_Java 实现中文-拼音转换
  14. 爱心的数学函数方程_什么函数图像能构成爱心?
  15. [原创] vlc视频播放插件使用总结
  16. Android 运行时权限
  17. 一个更高效的RACK机制
  18. 客户端Connection reset by peer怎么办?——可能只是服务端挂了
  19. element上传图片至最大限制数量时,隐藏上传按钮
  20. Android ANR日志分析进行曲

热门文章

  1. 如何整一个厉害的产品slogan?
  2. 产品经理是否应该给 UI 设计师的设计稿提意见?
  3. 作者:​郭海红(1987-),女,中国医学科学院医学信息研究所助理研究员。...
  4. 作者:姚登举(1980-),男,哈尔滨理工大学副教授。
  5. 【计算机组成原理】Chapter1-复习题
  6. 【数据库系统】DBMS、DBS、DBA、DB的区别
  7. 【OJ】洛谷分支结构题单题解锦集
  8. 快速排序+统计→奶牛的耳语(洛谷P1296题题解,Java语言描述)
  9. C语言编程 简单展开扫雷游戏
  10. python出现的各种问题