在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函數來打開并讀取共享內存中的數據。