本文主要是介绍C++共享内存交互方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、什么是共享内存
文件映射是一种实现进程间单向或双向通信的机制。它允许两个或多个本地进程间相互通信。为了共享文件或内存,所有的进程必须使用相同的文件映射的名字或是句柄。
说白了就是把内存当成磁盘,在内存上新建一个文件,其它进程只要知道这个文件的名字,就可以直接获取该内存文件上的数据。
二、实现步骤
为了实现共享文件,进程先调用OpenFileMapping方法,如果内存没有相应的文件可以使用::CreateFileMapping方法创建(或者提示用户运行第一个进程创建)。 由于事件,信号,互斥对象和文件映射等这些内核对象都共享同一个名字空间,所以如果这个名字和其他一个对象的名称重名的话那么将创建失败。
进程应首先调用 CreateFileMapping 函数然后在 hFile 参数中传入INVALID_HANDLE_VALUE宏来替代句柄。相应的文件映射对象会从系统的分页文件中获得一段内存。如果hFile参数的值是INVALID_HANDLE_VALUE,那么你在调用CreateFileMapping时必须给共享内存指定一个大小值。使用共享内存或文件的进程必须使用MapViewOfFile函数或MapViewOfFileEx函数来创建一个文件视图。
三、代码
#include<Windows.h>
#include<iostream>
#include <string>
#include <cstring>using namespace std;#pragma warning(disable:4996)
int main()
{string strMapName("ShareMemory"); // 内存映射对象名称string strComData("This is
这篇关于C++共享内存交互方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!