打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
windows共享内存的应用

一共有两个程序,分别为Server 和Client 。

Server在内存中开辟一块数据区域并写入数据,Client读取Serve在内存中开辟的数据区内的数据并显示出来

共享区域通过名称辨别

VS2010下正常编译通过

下面上源代码

Server端源代码:

#include<Windows.h>
#include<iostream>
using namespace std;
int main()
{
 HANDLE myhandle;
 /*
 *在内存划出大小4字节名为MyInfo的区域
 */
 myhandle=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(int),L"MyInfo");
 DWORD error=GetLastError();
 if(error== ERROR_FILE_INVALID||error== ERROR_INVALID_HANDLE ||error==  ERROR_ALREADY_EXISTS  )
 {
  cout<<"Create Failed"<<endl;
 }
 else
 {
  cout<<"Create Success"<<endl;
  int x;
  int *p;
  while(cin>>x)
  { 
   /*
   * 获取内存对象,并操作写入一个int型数据
   */
   p=(int *)MapViewOfFile(myhandle,FILE_MAP_WRITE,0,0,sizeof(int));
   p[0]=x;
   cout<<"成功将数据"<<x<<"写入共享内存区"<<endl;
   UnmapViewOfFile(p); 
  }
 }
 CloseHandle( myhandle);
 system("pause");
 return 0;
}

Client端源代码:

#include<Windows.h>
#include<iostream>
using namespace std;
int main()
{
 HANDLE myhandle;
 myhandle=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READONLY,0,sizeof(int),L"MyInfo");
 DWORD error=GetLastError();
 if(error!=  ERROR_ALREADY_EXISTS  )
 {
  cout<<"Create Failed"<<endl;
 }
 else
 {
  cout<<"Create Success"<<endl;
  int x;
  int *p;
  while(cin>>x)
  {
   /*
   * 获取内存对象,并操作读取一个int型数据
   */
   p=(int *)MapViewOfFile(myhandle,FILE_MAP_READ,0,0,sizeof(int));
   cout<<"共享区域数据为:"<<p[0]<<endl;
   UnmapViewOfFile(p);
   
  }
 }
 CloseHandle( myhandle);
 system("pause");
 return 0;
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
new,delete和指针
关于union和struct的内存分配
指针数组,数组指针,指针函数,函数指针,二级指针详解
suningin详解面试笔试题(11)
c++知识 - 洋男的日志 - 网易博客
C++内存管理详解(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服