我在理解这两行代码时遇到了一些麻烦。
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类中的上下文。
答案 0 :(得分:2)
Free = *((T**)Free);
我认为这可以更清楚地写成:
Free = (T *) *Free;
两个语句都依赖于未定义的行为,将T
视为T *
指针。从概念上讲,他们正在做的是将*Free
分配给Free
。例如,如果T
为int
,则该语句会重新解释int
作为指向int
的指针,将其指定为原始指针的上方。
至于这种意义,这取决于更大的背景。代码粗略;它可能是天才,也可能是愚蠢的。