【发布时间】:2016-04-07 18:40:28
【问题描述】:
这个程序应该使用win32 API 写入共享内存。它是教科书中给出的程序,但是当我尝试执行它时它失败了。当我点击执行时它崩溃了
程序应该将字符串写入共享内存
#include<windows.h>
#include<stdio.h>
int main(int argc, char *argv[])
{
HANDLE hFile, hMapFile;
LPVOID lpMapAddress;
//mapping of memory
hFile=CreateFile("temp.txt",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0,0, TEXT("SharedObject"));
lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
//writing into shared memory
sprintf((char*)lpMapAddress,"shared memory writing");
UnmapViewOfFile(lpMapAddress);
CloseHandle(hFile);
CloseHandle(hMapFile);
}
【问题讨论】:
-
使用调试器进行代码单步调试?依赖.exe?错误信息?
-
您不必为内存映射文件映射 > 0 字节的文件吗?虽然我上一次使用 WINAPI 查看内存映射文件是在 1990 年代后期。
-
它会立即崩溃您的调试器应该会提供帮助。
-
您没有检查错误并获得了通常的后果。
标签: c++ api winapi memory shared