【发布时间】:2022-01-20 23:38:21
【问题描述】:
我正在获取静态代码分析
错误 C6001,使用未初始化的内存 'zExplicitAccess.Trustee.ptstrName'
VS2022(v143)升级后的以下代码。有人可以建议这里有什么问题以及如何解决它吗?
C++ 语言标准 - ISO C++17 标准
EXPLICIT_ACCESS zExplicitAccess[4];
ULONG dwIndex;
/*----- Initialize structure for new access -----*/
memset(&zExplicitAccess[0], (char)0, sizeof(EXPLICIT_ACCESS) * 4);
for (dwIndex = 0; dwIndex < 3; ++dwIndex)
{
zExplicitAccess[dwIndex].Trustee.TrusteeForm = TRUSTEE_IS_SID;
zExplicitAccess[dwIndex].Trustee.ptstrName = (char *)_GetSidFromUser(zExplicitAccess[dwIndex].Trustee.ptstrName, NULL);
}
for (dwIndex = 0; dwIndex < 3; ++dwIndex)
{
free(zExplicitAccess[dwIndex].Trustee.ptstrName);// **Error 6001 here**
}
【问题讨论】:
-
此问题显示的代码不符合 Stackoverflow 显示 minimal reproducible example 的要求。因此,这里的任何人都不太可能最终回答这个问题。但最多只能猜测。你需要edit你的问题来展示一个最小的例子,不超过一两页代码(“最小”部分),其他人都可以剪切/粘贴完全如图所示,编译、运行和重现所描述的问题(“可重现”部分,这包括任何辅助信息,如程序的任何输入)。请参阅How to Ask 了解更多信息。
-
嗨,我已经更新了这个问题,希望它现在可以理解并且符合所需的最低标准
-
您能否对以下问题回答“是”或“否”:“每个人都可以将此处显示的内容剪切/粘贴到一个空文件中;然后编译、运行并重现问题吗?”除非你的回答是“是”,否则你怎么能称之为minimal reproducible example?继续:打开一个空文件,剪切/粘贴正是这个问题中显示的内容,然后尝试编译它,然后看看会发生什么。
标签: c++ memory-management c++17 static-code-analysis visual-studio-2022