温馨提示×

c++ windows下创建共享内存

小云
156
2023-08-19 14:09:10
栏目: 编程语言

在Windows下,可以使用CreateFileMapping函数来创建共享内存。

以下是一个示例代码:

#include <iostream>
#include <windows.h>
int main()
{
// 创建共享内存
HANDLE hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE,   // 使用无效的文件句柄
NULL,                   // 默认安全属性
PAGE_READWRITE,         // 可读写权限
0,                      // 共享内存大小(0表示文件大小)
4096,                   // 共享内存名称
TEXT("MySharedMemory")
);
if (hMapFile == NULL)
{
std::cout << "无法创建共享内存,错误代码:" << GetLastError() << std::endl;
return 1;
}
// 将共享内存映射到进程的地址空间
LPVOID pBuf = MapViewOfFile(
hMapFile,       // 共享内存句柄
FILE_MAP_ALL_ACCESS,    // 可读写权限
0,
0,
);
if (pBuf == NULL)
{
std::cout << "无法映射共享内存,错误代码:" << GetLastError() << std::endl;
CloseHandle(hMapFile);
return 1;
}
// 写入数据到共享内存
strcpy_s((char*)pBuf, 4096, "Hello, shared memory!");
// 等待用户输入
std::cin.get();
// 解除内存映射
UnmapViewOfFile(pBuf);
// 关闭共享内存句柄
CloseHandle(hMapFile);
return 0;
}

这段代码创建了一个大小为4096字节的共享内存,并将字符串"Hello, shared memory!"写入其中。你可以在其他进程中使用OpenFileMapping函数来打开并读取共享内存中的数据。

0