在Windows下,可以使用CreateFileMapping函数来创建共享内存。
以下是一个示例代码:
#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函数来打开并读取共享内存中的数据。