代码实现windows进程共享内存
时间: 2023-10-07 09:12:46 浏览: 101
在Windows下基于共享内存实现进程间通信
以下是在 Windows 平台上使用 C++ 实现共享内存的示例代码:
```
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
HANDLE hMapFile;
LPCTSTR pBuf;
// 创建共享内存
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
4096,
TEXT("Local\\MyFileMappingObject")); // 共享内存名字
if (hMapFile == NULL) {
cout << "Could not create file mapping object: " << GetLastError() << endl;
return 1;
}
// 在当前进程的虚拟地址空间中映射共享内存
pBuf = (LPTSTR)MapViewOfFile(
hMapFile,
FILE_MAP_ALL_ACCESS,
0,
0,
4096);
if (pBuf == NULL) {
cout << "Could not map view of file: " << GetLastError() << endl;
// 关闭共享内存
CloseHandle(hMapFile);
return 1;
}
// 写入数据到共享内存
CopyMemory((PVOID)pBuf, "Hello Shared Memory!", sizeof("Hello Shared Memory!"));
cout << "Data written to shared memory: " << pBuf << endl;
// 释放共享内存映射
UnmapViewOfFile(pBuf);
// 关闭共享内存
CloseHandle(hMapFile);
return 0;
}
```
在上面的代码中,我们使用了 Windows API 中的 `CreateFileMapping()` 和 `MapViewOfFile()` 函数来创建和访问共享内存。我们首先创建了一个共享内存对象,并指定了共享内存的大小和名称。我们然后使用 `MapViewOfFile()` 函数将共享内存映射到当前进程的虚拟地址空间中,从而可以在进程中访问共享内存。最后,我们使用 `CopyMemory()` 函数将数据写入共享内存,并使用 `UnmapViewOfFile()` 函数释放共享内存映射。
阅读全文