c++ windows下创建共享内存
在Windows下,可以使用CreateFileMapping函数来创建共享内存。
以下是一个示例代码:
```cpp
#include
#include
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函数来打开并读取共享内存中的数据。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341