我通过CreateFileMapping MapViewOfFile 创建的共享内存 用于2个进程间共享数据。
两个进程退出的时候都需要释放还是只需在一个进程里面释放就可以?
另外我再一个进程退出时候释放共享内存很正常,另外一个进程里面释放就会报下面的错误:
Windows has triggered a breakpoint in *.exe.
2 This may be due to a corruption of the heap, which indicates a bug in *.exe or any of the DLLs it has loaded.
3 This may also be due to the user pressing F12 while *.exe has focus.急求帮忙
两个进程退出的时候都需要释放还是只需在一个进程里面释放就可以?
另外我再一个进程退出时候释放共享内存很正常,另外一个进程里面释放就会报下面的错误:
Windows has triggered a breakpoint in *.exe.
2 This may be due to a corruption of the heap, which indicates a bug in *.exe or any of the DLLs it has loaded.
3 This may also be due to the user pressing F12 while *.exe has focus.急求帮忙
解决方案 »
- CDialog::Create这个成员函数好生奇怪
- 如何通过程序使另一个程序响应"Enter"键事件
- 窗口最小化的时候,点击任务栏的窗口,请问怎么获取鼠标点击的消息?
- 帮忙看看,窗口怎么出不来
- 关于导入Excel的代码,请大侠帮忙看看哪里出错了!HELP……
- 如何让CList控件选中一行。
- 新建对话框时遇到的问题
- COM组件ASP调用的问题,想了半天也不明白!!在线等待中
- 在电脑端ADB如何区分连接的是哪台手机
- 问一个文件夹删除的问题
- vs2010 error C2664: “tetrahedralize”: 不能将参数 1 从“const char [12]”转换为“tetgenbehavi
- 备份SQL2000数据库出错
另外我遇到一个更奇怪的问题。我用vs2005写的一个程序A,程序A里面生成一个对象1,对象1是在共享内存上生成的。我用vs2010写的程序B要去读程序A生成的对象1,结果发现对象1里面的部分数据是对的,部分数据是错的。不知道是我代码本身的问题还是vs2010和vs2005生成的对象内存布局本身不一致导致的?
我查了很久了,也发现我代码上本身的问题。
对了有个特点就是我写的程序A是一个dll的插件程序来的,不是独立的程序,不知道与这个有关系没?
比方说程序A生成了一个对象1,我会保存它的相对地址,然后程序B可以通过这个相对地址再加上共享内存在程序b中的头地址计算出它的绝对地址。在强制转换成对象1.这样程序B就可以访问它了。
这样方式下我测试了有些对象能正常访问,有些又不可以。
这方法明显是错误的。原因就是相对地址都是虚拟映射的。每次开个EXE就会根据自身情况重新编排。
你有些对象能正常访问,这个只是巧合中的巧合。