在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函数来打开并读取共享内存中的数据。