windows实现共享内存
时间: 2024-04-23 10:14:52 浏览: 28
在Windows下实现共享内存可以使用Windows API提供的函数来完成。下面是一个简单的示例代码:
```cpp
#include <Windows.h>
int main() {
// 创建共享内存
HANDLE hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // 使用无效的文件句柄创建匿名共享内存
NULL, // 默认安全属性
PAGE_READWRITE, // 可读写访问权限
0, // 共享内存大小(高32位)
sizeof(int), // 共享内存大小(低32位)
L"MySharedMemory"); // 共享内存名称
if (hMapFile == NULL) {
// 处理错误
return 1;
}
// 将共享内存映射到进程的地址空间
LPVOID pBuf = MapViewOfFile(
hMapFile, // 共享内存句柄
FILE_MAP_ALL_ACCESS, // 可读写访问权限
0, // 文件偏移(高32位)
0, // 文件偏移(低32位)
sizeof(int)); // 映射的内存大小
if (pBuf == NULL) {
// 处理错误
CloseHandle(hMapFile);
return 1;
}
// 写入数据到共享内存
int* pData = (int*)pBuf;
*pData = 123;
// 从共享内存读取数据
int data = *pData;
printf("Read data from shared memory: %d\n", data);
// 解除映射并关闭共享内存句柄
UnmapViewOfFile(pBuf);
CloseHandle(hMapFile);
return 0;
}
```
这段代码创建了一个大小为 `sizeof(int)` 的共享内存,并将其映射到当前进程的地址空间中。然后,通过指针 `pData` 可以对共享内存中的数据进行读写操作。最后,使用 `UnmapViewOfFile` 解除映射并使用 `CloseHandle` 关闭共享内存句柄。
请注意,此示例仅仅是演示了共享内存的基本用法,实际使用中可能需要进行更多的错误处理和同步操作,以确保多个进程之间的数据一致性和安全性。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)