我有以下 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
)
谢谢!
一种更简单、更典型的代码编写方式如下:
SECURITY_DESCRIPTOR sd = {};
SECURITY_ATTRIBUTES saNullDACL = {};
saNullDACL.nLength = sizeof (SECURITY_ATTRIBUTES);
saNullDACL.bInheritHandle = TRUE;
saNullDACL.lpSecurityDescriptor = &sd;
不再需要堆分配,不再担心最后释放它!