内存

技术内存 内存一、物理内存和虚拟内存
1、虚拟内存每个程序都有4G虚拟内存,相当于空头支票
只有真正要用的时候,才会在物理内存中给你分配一块物理内存
4kb页式管理,一页是4kb大小(物理页)2、虚拟内

内存储器

一、物理内存和虚拟内存

1、虚拟内存

每个程序都有4G虚拟内存,相当于一张空头支票。

只有真正需要的时候,才会在物理内存中分配给你一块物理内存。

4kb页面管理,一个页面是4kb(物理页面)

2、虚拟内存地址划分

3、物理内存

记忆棒的大小(不一定100%能识别所有大小,大概)虚拟内存(硬盘)

32位系统可以识别64G的最大物理内存,但由于操作系统的限制,比如XP,只能识别4G(Windows 2003服务器版本可以识别4G以上)

二、私有内存申请和释放

1、申请

#包含' stdafx.h '

int main(int argc,char* arvc[])

{

LPVOID p=VirtualAlloc(

空,//要分配的内存区域的地址(通常为空)

1000*2,//分配物理页面的大小(除以物理页面的整数倍,十进制4096,十六进制1000)

MEM_COMMIT,//分配类型(MEM_RESERVE,占用虚拟地址,不需要物理内存,mem _ commit,占用虚拟地址,也需要使用物理页面)

PAGE_READWRITE //该内存的初始保护属性(读和写)

);

返回;

}

2、释放

#包含' stdafx.h '

int main(int argc,char* arvc[])

{

LPVOID p=VirtualAlloc(

空,//要分配的内存区域的地址(通常为空)

1000*2,//分配物理页面的大小(除以物理页面的整数倍,十进制4096,十六进制1000)

MEM_COMMIT,//分配类型(MEM_RESERVE,占用虚拟地址,不需要物理内存,mem _ commit,占用虚拟地址,也需要使用物理页面)

PAGE_READWRITE //该内存的初始保护属性(读和写)

);

VirtualFree(

p,//区域地址

0x 1000 * 2//物理页面大小,字节

MEM_DECOMMIT //类型(MEM_DECOMMIT,保留虚拟地址,不保留物理页面,MEM _ RELEST,不保留虚拟地址,不保留物理页面)

);

返回;

}

3、malloc是从已经分配好的一块内存中挖出一块给自己用,本质上分配内存的不是它

三、共享内存申请和释放

一个过程:

#包含' stdafx.h '

#包括“windows.h”

#定义映射文件名' ZZZ '

#定义BUFSIZE0x1000

HANDLE g _ hMapFile

LPTSTR g _ lpBuff

int main(int argc,char* argv[])

{

//内核对象,创建物理页面

g_hMapFile=CreateFileMapping(

INVALID _ HANDLE _ VALID,当//是INVALID _ HANDLE _ VALID时,它不与文件相关联。

空,//安全描述符

PAGE_READWRITE,//保护模式(读写权限)

0,//32位通常为空。

物理页面的大小

MapFileName//指定文件映射对象的名称。

);

//用线性地址映射物理页面,g_lpBuff为虚拟内存地址。

g_lpBuff=(LPTSTR)MapViewOfFile(

G_hMapFile,//句柄

FILE_MAP_ALL_ACCESS,//虚拟内存的读写权限

0,//不使用32位。

0,//从哪里开始映射?

BUFSIZ////物理页面有多大就有多大。

);

DWORD eror=GetLastError();

*(PDWORD)g _ LPbuff=0x 12345678;//将值保存到虚拟内存地址

printf('%p ',g _ lpBuff);

getchar();

//关闭映射,物理页面的计数器只会减少一。

unmapviewofile(g _ lpBuff);

//关闭手柄

close handle(g _ hmap file);

getchar();

返回0;

}

b .进程:

#包含' stdafx.h '

#包括“windows.h”

#定义映射文件名' ZZZ '

#定义BUFSIZE0x1000

HANDLE g _ hMapFile

LPTSTR g _ lpBuff

int main(int argc,char* argv[])

{

g _ hmap file=createfile mapping(INVALID _ HANDLE _ VALUE,NULL,PAGE_READWRITE,0,BUFSIZ,MapFileName);

//用线性地址映射物理页面,g_lpBuff为虚拟内存地址。

g _ lpBuff=(LPTSTR)MapViewOfFile(g _ hmap FILE,FILE_MAP_ALL_ACCESS,0,0,BUFSIZ);

Printf ('process B:%x ',*(PDWORD)g _ lpBuff);

//关闭映射

unmapviewofile(g _ lpBuff);

//关闭手柄

close handle(g _ hmap file);

getchar();

返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157183.html

(0)

相关推荐

  • 10cm是多少米,10cm等于多少米

    技术10cm是多少米,10cm等于多少米10厘米等于0.1米10cm是多少米。 (1)“米”(metre),国际单位制基本长度单位,符号为m。可用来衡量长、宽、高。
    (2)分米(英文名为decimetre、dm)是长度

    生活 2021年10月26日
  • 孙悟空的人物特点,西游记关于孙悟空性格特点的句子

    技术孙悟空的人物特点,西游记关于孙悟空性格特点的句子1、外貌孙悟空的人物特点: 身穿金甲亮堂堂,头戴金冠光映映。手举金箍棒一根,足踏云鞋皆相称。一双怪眼似明星,两耳过肩查又硬。挺挺身才变化多,声音响亮如钟磬。尖嘴咨牙弼马

    生活 2021年10月25日
  • 怎么使用百度siteapp将PC网站转化成手机网站

    技术怎么使用百度siteapp将PC网站转化成手机网站本篇文章为大家展示了怎么使用百度siteapp将PC网站转化成手机网站,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。许多朋友

    攻略 2021年11月3日
  • sqoop安装部署

    技术sqoop安装部署 sqoop安装部署sqoop安装部署
    安装sqoop的前提是已经具备Java和Hadoop环境。
    下载地址:https://www.apache.org/dyn/closer.l

    礼包 2021年11月9日
  • 微信能传多大的视频,微信朋友圈能发多大的视频

    技术微信能传多大的视频,微信朋友圈能发多大的视频在iOS系统下能发400KB以内视频微信能传多大的视频,Android系统能发200到300KB之间的视频。 1.使用微信,网络不稳定,流量也受限时不太适合用户发布或者查

    生活 2021年10月20日
  • 铁与稀盐酸反应的化学方程式,用稀盐酸除铁锈的化学反应方程式

    技术铁与稀盐酸反应的化学方程式,用稀盐酸除铁锈的化学反应方程式铁锈的主要成分是氧化铁(fe2o3)铁与稀盐酸反应的化学方程式,将生锈的铁钉放入稀盐酸中,先是表面的铁锈的主要成分氧化铁与盐酸反应生成氯化铁与水,反应现象为:

    生活 2021年10月23日