VS2022 代码分析错误 C6001 Using uninitialized memory
Posted
技术标签:
【中文标题】VS2022 代码分析错误 C6001 Using uninitialized memory【英文标题】:VS2022 code analysis error C6001 Using uninitialized memory 【发布时间】: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**
【问题讨论】:
此问题显示的代码不符合 *** 显示 minimal reproducible example 的要求。因此,这里的任何人都不太可能最终回答这个问题。但最多只能猜测。你需要edit你的问题来展示一个最小的例子,不超过一两页代码(“最小”部分),其他人都可以剪切/粘贴完全如图所示,编译、运行和重现所描述的问题(“可重现”部分,这包括任何辅助信息,如程序的任何输入)。请参阅How to Ask 了解更多信息。 嗨,我已经更新了这个问题,希望它现在可以理解并且符合所需的最低标准 您能否对以下问题回答“是”或“否”:“每个人都可以将此处显示的内容剪切/粘贴到一个空文件中;然后编译、运行并重现问题吗?”除非你的回答是“是”,否则你怎么能称之为minimal reproducible example?继续:打开一个空文件,剪切/粘贴正是这个问题中显示的内容,然后尝试编译它,然后看看会发生什么。 【参考方案1】:要修复 VS2022 中的静态代码分析错误,将 free 替换为 delete。 谢谢!
/*----- Convert user names to SIDS (to save time)-----*/
for (dwIndex = 0; dwIndex < 3; ++dwIndex)
zExplicitAccess[dwIndex].Trustee.TrusteeForm = TRUSTEE_IS_SID;
zExplicitAccess[dwIndex].Trustee.ptstrName = (char *)_GetSidFromUser(zExplicitAccess[dwIndex].Trustee.ptstrName, NULL);
/*----- Tidy up SIDS -----*/
for (dwIndex = 0; dwIndex < 3; ++dwIndex)
free(zExplicitAccess[dwIndex].Trustee.ptstrName); // C6001 error
【讨论】:
以上是关于VS2022 代码分析错误 C6001 Using uninitialized memory的主要内容,如果未能解决你的问题,请参考以下文章
vs2022出现错误的警告,谁能解决一下这个编译器问题(代码无问题)?
vs2008中的错误 1 找不到类型或命名空间名称“Graphics”(是不是缺少 using 指令或程序集引用?)怎么解决?急
register at least one qt version using“qt vs tools“->“qt options“问题描述及解决方法
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C4996 ‘strcpy‘: This function or variable may be unsafe. Consider using