gpt4 book ai didi

c++ - 为什么调用 LocalFree() 会导致错误?

转载 作者:搜寻专家 更新时间:2023-10-31 00:32:23 27 4
gpt4 key购买 nike

我正在调用 GetNamedSecurityInfo()如下:

PSID pSID = NULL;
PSECURITY_DESCRIPTOR pSD = NULL;

// Retrieve the owner SID for the file
if(GetNamedSecurityInfo(TEXT("myfile.txt"),
SE_FILE_OBJECT,
OWNER_SECURITY_INFORMATION,
&pSID,
NULL, NULL, NULL,
&pSD) != ERROR_SUCCESS) {
/* error handling */
}

FreeSid(pSID);
LocalFree(pSD);

但是,当我运行该应用程序时,它崩溃了。调试器报告:Critical error detected c0000374 并指向上述代码段末尾的 LocalFree() 行。

为什么这条线会导致问题?根据 ppSecurityDescriptor 参数的文档:

"A pointer to a variable that receives a pointer to the security descriptor of the object. When you have finished using the pointer, free the returned buffer by calling the LocalFree function."

...这正是我所做的。

最佳答案

pSID 本地 var 引用的 SID 指的是已经保存在 pSD 引用的安全描述符中的数据。它“拥有”该 SID,而您拥有描述符引用。您只需要释放后者。

简短版本:删除 FreeSid(pSID) 调用。

关于c++ - 为什么调用 LocalFree() 会导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31441149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com