我正在阅读这篇有趣的文章。 http://www.codeproject.com/Articles/746630/O-Object-Pool-in-Cplusplus
我无法理解这一行 _firstDeleted = *((T **)_firstDeleted);
_firstDeleted
已经有类型 T*
。任何人都可以解释该声明的目的吗?
最佳答案
当一个对象被销毁时,它的第一个 sizeof(T*)
字节被下一个空闲对象的地址覆盖。
(也就是说,*T
实际上不再存储一个 T
,而是一个 T*
,如果你明白我的意思的话。 Actor 执行这个重新解释。它在形式上相当不确定。)
这具有已删除对象形成可用内存块链表的效果。
为这个列表重用对象内存意味着你不需要一个单独的空闲 block 列表。
关于c++ - 理解指针转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490903/