程序启动时调一次MapViewOfFile(),然后连续两次写、读,结果都是第二次写入值
WYHVC 2009-09-07 02:59:48 程序1读取bmp数据,传给程序2。
程序1启动时,调用一次CreateFileMapping()和MapViewOfFile(),
程序1启动起来后:
读取bmp1数据,记为bmpData1
读取bmp2数据,记为bmpData2
程序1响应按钮btnSend函数:
程序1将bmpData1写入内存,然后SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);告知程序2,程序2调用OpenFileMapping(),Data1=MapViewOfFile(),再将Data1保存到一个byte *m_pData1;//-------(1)
程序1将bmpData2写入内存,然后SendMessage(WINDOW_HANDLER, WM_COPYDATA, 0, ref cds);告知程序2,程序2调用OpenFileMapping(),Data2=MapViewOfFile(),再将Data2保存到一个byte *m_pData2;//--------(2)
结束。
在程序2的(1)处,m_pData1还是正确的,可是到(2)处后,m_pData1就变成等于m_pData2了,
疑问:
1.是不是m_pData1和m_pData2都是同一个内存地址?可是我在程序2中将m_pData1和m_pData2分别初始化:m_pData1=NULL,m_pData1=new byte(),析构函数中判断if(m_pData1!=NULL)
{delete m_pData1; m_pData1=NULL;}结果还是两个数据都是第二次写入的值,而且到析构还是那里还报错。
2.是不是需要每次写入都要重新CreateFileMapping()和MapViewOfFile()?