Advertisement

IE加载OCX插件的原因是栈溢出问题

阅读量:

最近需要解决一个问题。一个部门同事提供的DLL占用较大的栈内存,在我运用VS2013控制台程序测试时出现了崩溃现象。经过分析发现这是由于栈内存不足所致的问题。因此,在此基础之上我将VS的栈保留大小设定为100MB,并且问题便迎刃而解了。

目前致力于将他的DLL库整合进IE所支持的OCX组件中。经过深入分析发现,在调用该库函数时系统出现了崩溃现象。在编译过程中我也曾将栈保留大小设置为100M,并未成功解决相关问题。然而IE对此类做法并不认可。

我写了个插件demo,发现我申请1.8M左右栈内存的时候IE就会出现崩溃。。

复制代码
    char c[1024*1024*2]; // 2M都申请不到,IE11下测试,new堆上内存将近可以申请1G也不会崩

目前没有找到能够修改Internet Explorer(IE)栈预留大小的有效方法。
当然存在一些解决方案但不建议采用由于当前栈上的内存使用接近100M因此建议将程序的内存申请策略从堆上改为从栈上实施以减少资源占用风险。


找到一篇关于浏览器栈内存的文章:
http://codingdict.com/questions/9546

测试能申请多少栈内存:

复制代码
    var i=0;
    function inc() {
    i++;
    inc();
    }
    inc(

全部评论 (0)

还没有任何评论哟~