我的应用程序在以下源代码行崩溃:
CString path;
path = CACHE_DIR _T("Local\\Alarm\\current.tmp");
地点:
#define CACHE_DIR _T("C:\\<somewhere>\\System Cache\\")
调用堆栈提到以下代码行:
mfc140u.dll!ATL::CSimpleStringT<wchar_t,1>::operator=(const wchar_t * pszSrc) Line 317
我尝试做一些分析,尝试使用即时窗口,但这无法识别 _T()
运算符,也无法识别其同义词 __T()
或 L ##
。
所以现在看来,我有两个可能的原因:
- 连接出错(问题:连接两个
CString
对象是否正确,只需将它们一个接一个地放在一行源代码中?)。
拼接的结果很好,但我无法将其放入结果变量中,这是由于:
2.1。处理 CString
变量的错误方法。
2.2。内存问题,与这一行特定的源代码无关(但为什么我的应用程序会一直在这一行崩溃?)。
请注意,我的应用程序是多线程的。
谁能告诉我我的应用程序出了什么问题?
在第一条评论后编辑:
来源似乎是正确的,这可能表明堆损坏,但我不知道如何调查堆。有人对此事有任何线索吗?
我找到了问题的“原因”:为了解决之前的问题,我启用了计算机的所有 gflags,但后来忘记禁用它们。
我现在已经禁用了所有的 gflags,现在问题不再出现了:
启动“Application Verifier”,配置如下:
我是一名优秀的程序员,十分优秀!