创建新线程c++时是否应该释放为SECURITY_ATTRIBUTES的lpSecurityDescriptor分配的内存

问题描述 投票:0回答:1

我有以下 C++ 代码:

SECURITY_ATTRIBUTES saNullDACL;
saNullDACL.nLength = sizeof (SECURITY_ATTRIBUTES);
saNullDACL.bInheritHandle = TRUE;
saNullDACL.lpSecurityDescriptor = new SECURITY_DESCRIPTOR;
::InitializeSecurityDescriptor (saNullDACL.lpSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION);
::SetSecurityDescriptorControl (saNullDACL.lpSecurityDescriptor  ,SE_DACL_PROTECTED,SE_DACL_PROTECTED);  
::SetSecurityDescriptorDacl (saNullDACL.lpSecurityDescriptor, TRUE, NULL, FALSE);

myThread = CreateThread(&saNullDACL, 0, myFunction, myStopEvent, 0, &myThreadID );

我的问题是 - 创建新线程后我应该删除

saNullDACL.lpSecurityDescriptor
吗? (例如
delete saNullDACL.lpSecurityDescriptor
) 谢谢!

c++ multithreading winapi
1个回答
0
投票

一种更简单、更典型的代码编写方式如下:

SECURITY_DESCRIPTOR sd = {};
SECURITY_ATTRIBUTES saNullDACL = {};
saNullDACL.nLength = sizeof (SECURITY_ATTRIBUTES);
saNullDACL.bInheritHandle = TRUE;
saNullDACL.lpSecurityDescriptor = &sd;

不再需要堆分配,不再担心最后释放它!

© www.soinside.com 2019 - 2024. All rights reserved.