c++ - 理解指针转换

标签 c++ pointers casting pool

我正在阅读这篇有趣的文章。 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/

相关文章:

c++ - 可能操作错误,随机个位数输出

c++ - 在可执行文件中链接 CUDA 文件时出现 cuSparse 函数的多个定义错误

c++ - C++ 中的狮身人面像 (Linux)

c++ - 如何 memset 一个 bool 数组?

c - C 中 int *[5] 和 int (*)[5] 有什么区别?

C++指针奇怪的未定义行为

string - 从 Golang pkg/net/interface_windows.go 了解 bytePtrToString()

C - 非标准结构 "compatibility"

C++:reinterpret_cast 的奇怪行为

将 char 指针转换为 int 指针 - 缓冲区错误 10