[英]dereferencing pointer that was cast to double pointer
我在理解这两行代码时遇到了一些麻烦。
T* Result = Free;
Free = *((T**)Free);
其中T是模板类,而Free被定义为;
T* Free;
它只是在创建指向其他内存地址的新指针吗?
http://jfdube.wordpress.com/2011/10/06/memory-management-part-2-allocations-tracking/
这是上下文,在New()函数内的Freelist类中。
Free = *((T**)Free);
我认为这可以更清楚地写为:
Free = (T *) *Free;
这两个语句都依赖于未定义的行为,将T
视为T *
指针。 从概念上讲,他们正在做的是将*Free
分配给Free
。 例如,如果T
为int
,则该语句将int
解释为指向int
的指针,将其分配给原始指针的顶部。
至于这意味着什么,则取决于更大的上下文。 代码是粗略的; 它可能是天才,也可能是愚蠢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.