内存

技术内存 内存一、物理内存和虚拟内存
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)

相关推荐

  • 月饼的简笔画,女生是考公务员好还是教师好呢

    技术月饼的简笔画,女生是考公务员好还是教师好呢很多人都容易混淆公务员和教师的区别,认为教师也是事业单位,那么应该也是公务员月饼的简笔画。这是错误的,教师职业并不属于公务员范围,公务员是指具体管理国家资源分配和经济秩序的管

    生活 2021年10月25日
  • 如何理解TCP协议、算法和原理

    技术如何理解TCP协议、算法和原理如何理解TCP协议、算法和原理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先,我们需要知道,我们程序的

    攻略 2021年11月24日
  • 家具品牌排行榜,全国十大名牌家具的排名

    技术家具品牌排行榜,全国十大名牌家具的排名网上复制的家具品牌排行榜,希望对你有用啊,呵呵。 中国十大木地板品牌排行榜: 01,圣象地板(中国驰名商标,中国名牌)圣象集团; 02,盈彬大自然(中国名牌,国家免检产品)佛山

    生活 2021年10月28日
  • Oracle锁的面试题有哪些

    技术Oracle锁的面试题有哪些本篇内容介绍了“Oracle锁的面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年11月5日
  • MySQL中cron如何定时执行SQL语句

    技术MySQL中cron如何定时执行SQL语句这篇文章主要介绍MySQL中cron如何定时执行SQL语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql脚本内容如下:#!/bin/bash

    攻略 2021年10月29日
  • 圆锥的体积公式是什么,圆锥的面积和体积计算公式

    技术圆锥的体积公式是什么,圆锥的面积和体积计算公式一个圆锥所占空间的大小圆锥的体积公式是什么,叫做这个圆锥的体积.一个圆锥的体积等于与它等底等高的圆柱的体积的1/3根据圆柱体积公式V=Sh(V=πr^2h),得出圆锥体积

    生活 2021年10月21日