新人求教:
我在一个程序中写到: hMemSrv = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,300,"MNCTC"); 
我在另一个程序中写:    hMemGUI = OpenFileMapping(FILE_MAP_READ,FALSE, "MNCTC");这样能达到共享内存么?

解决方案 »

  1.   

    one:set
    #include <iostream.h>
    #include <stdio.h>
    #include <windows.h>int main()
    {
    HANDLE hMemSrv;
    unsigned char *pSetBuf;
    hMemSrv = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,300,"MNCTC"); 
    pSetBuf = (unsigned char *)MapViewOfFile(hMemSrv, FILE_MAP_WRITE,0,0,300);
    char *ch = (char *)pSetBuf; ch[4] = 'p'; int b;
    cin>>b;
    UnmapViewOfFile(pSetBuf);
    CloseHandle(hMemSrv); return 1;
    }two:get
    #include <iostream.h>
    #include <stdio.h>
    #include <windows.h>int main()
    { HANDLE hMemGUI;
    unsigned char *pGetBuf;
    (1)// hMemGUI = OpenFileMapping(FILE_MAP_READ,FALSE, "MNCTC");
    (2)// hMemGUI = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,300,"MNCTC"); 
    pGetBuf = (unsigned char *)MapViewOfFile(hMemGUI, FILE_MAP_WRITE,0,0,300);
     
    cout<<pGetBuf[4]<<endl;

    int d;
    cin>>d; UnmapViewOfFile(pSetBuf);
    CloseHandle(hMemSrv); return 1;
    }用语句1可以读出p
    用语句2报.exe错误。请问怎么回事?
      

  2.   

      google 内存映射文件