一个全局变量引起的DLL崩溃

Posted 我们是煮过的花朵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个全局变量引起的DLL崩溃相关的知识,希望对你有一定的参考价值。

参考我发的帖子:

http://bbs.csdn.net/topics/390737064?page=1#post-397000946

 

现象是exe程序在加载dll的时候崩溃了,莫名其妙的崩溃了。换其它DLL没问题,我又写了个DEMO程序使用这个DLL也是一个现象,用OD加载EXE,用ODDLLLOADER加载DLL,结果也是一样的崩。。搞的我也差点崩溃了。。

技术分享

加载上微软符号表后发现:

技术分享

然后自然而然的一个一个内核函数去查找去找可能,百度谷歌都翻了,看雪论坛也看了。

法个克,这个问题找了很长时间。我一直认为是项目配置错误导致的问题,跟代码无关。

最后发现是由于DLL中一个全局变量的构造函数中,给其成员变量分配的内存过大了,导致程序崩溃了。。分配的内存也不过是4096*1000这么个大小,导致栈溢出了。

 

在CU找到了一个同样问题的帖子。。MARK下。

http://bbs.chinaunix.net/thread-3732299-1-1.html

以上是关于一个全局变量引起的DLL崩溃的主要内容,如果未能解决你的问题,请参考以下文章

调试实战 —— dll 加载失败之全局变量初始化篇

QLibrary Visual C++ 全局变量

易语言 程序怎样使用dll中的全局变量

是共享库/dll中的全局变量,跨进程共享

当一个 DLL 被多次链接时,导出的全局变量会发生啥?

dll中的全局变量不一致?