读书人

关于SID_AND_ATTRIBUTES,该如何处理

发布时间: 2012-02-21 16:26:23 作者: rapoo

关于SID_AND_ATTRIBUTES
struct _SID_AND_ATTRIBUTES *
copy_sid_a(SID_AND_ATTRIBUTES *sid_a, ULONG sid_a_size)
{
SID_AND_ATTRIBUTES *result;

if (sid_a == NULL)
return NULL;

result = (SID_AND_ATTRIBUTES *)malloc_np(sid_a_size);
if (result == NULL)
return NULL;

memcpy(result, sid_a, sid_a_size);

result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);

return result;
}
求教result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);这句话什么意思?((char *)(sid_a->Sid) - (char *)sid_a);表达了什么?

[解决办法]
首先申明,仅代表自己的一种看法,不一定正确
求教result->Sid = (char *)result + ((char *)(sid_a->Sid) - (char *)sid_a);这句话什么意思?((char *)(sid_a->Sid) - (char *)sid_a);表达了什么?
(char *)result=当前的内存地址(相对地址)
((char *)(sid_a->Sid) - (char *)sid_a)==sid_a->Sid在struct _SID_AND_ATTRIBUTES中的偏移
连起来就是,result->Sid=这个变量在当前内存中的地址

读书人网 >C++ Builder

热点推荐