取消引用被强制转换为双指针的指针

时间:2013-07-30 22:34:58

标签: c++ pointers memory-management

我在理解这两行代码时遇到了一些麻烦。

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类中的上下文。

1 个答案:

答案 0 :(得分:2)

Free = *((T**)Free);

我认为这可以更清楚地写成:

Free = (T *) *Free;

两个语句都依赖于未定义的行为,将T视为T *指针。从概念上讲,他们正在做的是将*Free分配给Free。例如,如果Tint,则该语句会重新解释int作为指向int的指针,将其指定为原始指针的上方。

至于这种意义,这取决于更大的背景。代码粗略;它可能是天才,也可能是愚蠢的。