现在的位置: 首页 > 综合 > 正文

同一进程中的多模块之间非正常途径获取的指针,释放时VS会报错。

2013年10月02日 ⁄ 综合 ⁄ 共 330字 ⁄ 字号 评论关闭

最近在做单进程中多个IE窗口页面之间通讯的东东。

 

其中关键技术就是通过在IE页面中嵌入ACTIVEX,由ACTIVEX接收页面的输入并将输入的内容通过“共享”内存报告给其他页面中的ACTIVEX从而触发其他页面对数据的接收。由于ACTIVEX和页面都在同一个进程中,所以就没有使用WINDOWS的内存映射文件等进程间共享的机制,代之以在主程序中malloc了一块内存,并将该内存指针保存在本地文件中,再在ACTIVEX初始化时从该文件读取指针值,这样一样能达到访问同一块内存的目的。

 

经验证,若在ACTIVEX中对获取的指针进行free,VC就会报异常,程序会挂掉。

 

若在同一模块中进行上述操作则不会有这种问题。

 

结论:上述方法是危险的,不到不得已最好不要用。

抱歉!评论已关闭.