繁体   English   中英

取消引用转换为双指针的指针

[英]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 例如,如果Tint ,则该语句将int解释为指向int的指针,将其分配给原始指针的顶部。

至于这意味着什么,则取决于更大的上下文。 代码是粗略的; 它可能是天才,也可能是愚蠢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM