【发布时间】:2010-04-23 12:30:40
【问题描述】:
我已将我的 vc7.1 项目从 WInXP 移至 Win7。重建后,当我启动程序时,函数 _malloc_dbg 出现 stackoverflow 错误。
"Unhandled exception at 0x0051bf0f in XXX.exe: 0xC00000FD: Stack overflow."
----------------------
Call stack:
> msvcr71d.dll!_malloc_dbg(unsigned int nSize=140, int nBlockUse=2, const char * szFileName=0x10267784, int nLine=163)
msvcr71d.dll!_calloc_dbg(unsigned int nNum=1, unsigned int nSize=140, int nBlockUse=2, const char * szFileName=0x10267784, int nLine=163)
msvcr71d.dll!_mtinit()
msvcr71d.dll!_CRTDLL_INIT(void * hDllHandle=0x10200000, unsigned long dwReason=1, void * lpreserved=0x0018fd24)
----------------------
我尝试在项目选项中设置不同的堆栈大小(从 10 到 100 兆字节),但在所有情况下都出现此错误。
我该如何解决这个问题?
【问题讨论】:
-
编译时有警告吗?
-
我得到了很多。在 WinXP 中工作时我没有任何警告,现在我有类似警告 1. 警告 C4312: 'type cast' : 从 'int' 转换为更大尺寸的 'void *' 2. 警告 C4267: '=' : conversion from ' size_t' 到 'int',可能会丢失数据
-
这可能不言而喻,但您可能应该先解决这些问题。您现在构建的是 64 位还是之前构建的是 32 位?
-
>你现在是在构建 64 位还是以前是 32 位?我一直在 32 位 WinXP 中工作,现在我有 64 位 Win7,但我将我的项目构建为 32-位应用程序。
-
与 Vista/Win7 兼容的最后一个 Visual Studio 版本是 VS2005。已经 7 年了,该升级了。
标签: c++ visual-studio visual-c++ mfc