Windows核心编程里面说,共享内存被映射到高地址,例如32位程序的地址空间,程序自己用的是0-2G虚拟地址,2G-4G是留给共享内存和共享dll使用的地址空间。但是我写了个小程序测试了一下#include "stdafx.h"
#include<windows.h>
int main(void){
HANDLE hFileMapping = CreateFileMapping( INVALID_HANDLE_VALUE,
NULL, PAGE_READWRITE, 0, 1024, "myshare" );
LPVOID pvMapped = MapViewOfFile( hFileMapping, FILE_MAP_WRITE, 0, 0, 0 );
LPTSTR pStr = static_cast<LPTSTR>( pvMapped );
pStr[0]='a';
pStr[1]='b';
getchar();
UnmapViewOfFile( pvMapped );
CloseHandle( hFileMapping );
return 0;
}发现pvMapped的值是0x00370000,我用的vc2005。大虾给个解释吧!
#include<windows.h>
int main(void){
HANDLE hFileMapping = CreateFileMapping( INVALID_HANDLE_VALUE,
NULL, PAGE_READWRITE, 0, 1024, "myshare" );
LPVOID pvMapped = MapViewOfFile( hFileMapping, FILE_MAP_WRITE, 0, 0, 0 );
LPTSTR pStr = static_cast<LPTSTR>( pvMapped );
pStr[0]='a';
pStr[1]='b';
getchar();
UnmapViewOfFile( pvMapped );
CloseHandle( hFileMapping );
return 0;
}发现pvMapped的值是0x00370000,我用的vc2005。大虾给个解释吧!
解决方案 »
- 两个基础问题,欢迎讨论
- 关于ID3DXBaseEffect::GetParameterBySemantic
- 关于ping 的checksum函数的疑问?
- OPENGL问题
- 工具条位图文件的编辑中遇到的奇怪问题
- error LNK2001: unresolved external symbol
- 编译时出现无法生成预编译头信息pch文件,什么回事?88分是不是比100分动听点?
- 我用mfc向导建立了一个project,运行出错
- 请问如何通过程序启动WORD显示WORD文档?
- VC如何获取一个机器上的主IP和从IP
- 程序创建进程时钩子注入成功 直接打开注入成功但是不执行
- 在对话框里执行下面语句总是出现Debug Assertion Failed!而在视图类就很正常
这句话不对,共享内存和共享dll也可以在0-2G,MapViewOfFile得到的永远都在0-2G