C++,为何改变工程堆栈大小还是不能解决堆栈溢出的问题呢?
天蓬老师
天蓬老师 2017-04-17 15:34:34
0
2
563

我写了个DLL,用工具注入到explorer.exe,运行到某些函数的时候会导致DLL崩溃从而引发explorer.exe崩溃,
用drwtsn32.ex生成了dump文件,用windbg分析了下说是堆栈溢出。
(因为程序需要,所以数组定义的都特别大,MAXSIZE是6W多 Σ( ° △ °|||)︴)
于是我在工程属性里改了一下:

但还是没有解决问题。

但是在测试的EXE里用LoadLibrary加载就一切正常。而且没有在工程设置里改变堆栈大小(默认的空)

请问大神这是什么原因?

难道是注入到explorer.exe后,堆栈保留大小受explorer.exe的设置控制?如果是的话,请问该如何解决?

谢谢。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(2)
阿神

힙과 스택을 구별하세요. 스레드에만 스레드 스택인 스택이 있습니다.
여기서 설정한 것은 DLL의 스택 크기일 뿐이므로 쓸모가 없습니다. DLL의 함수는 실행할 탐색기 프로그램의 스레드에 주입되기 때문입니다.
동적 할당을 계속 사용하는 것이 좋지만 각 모듈에는 힙이 있으므로 DLL에서 적용한 메모리를 적극적으로 해제해야 합니다.
물론 문제의 핵심이 여기에 있지 않을 수도 있습니다.

洪涛

코드를 보여주세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿