一个DLL,在exe调用正常,换到OCX调用就内存溢出
经过一个下午的调试,
发现OCX是的栈大小限制导致的,
OCX中某个函数过程,申请了一个大容量的栈内存,
调用时虽没有出现溢出,
但是这个大容量内存已经破坏了被加载的DLL里面的内存空间数据,
导致运行到DLL中某个位置就莫名其妙的崩溃。
原因暂时不确定,
但是可以肯定是OCX在加载到IE运行时,
函数所能使用的栈空间容量比exe中的函数要小很多。
因为,同样的代码,在exe中调用就没问题,换到OCX就有问题。
印象中貌似有看过一篇文章说微软为了限制ActiveX控件的权限,将栈空间限制成几百K了。