当你动态分配了一个类型为
或者类似于此。
char *
的缓冲区,并想将其转换为特定类型时,应该使用类似以下代码:reinterpret_cast<int *>(char *)
或者类似于此。
static_cast<int *>(static_cast<void *>(char *))
为什么?
个人而言,我倾向于使用后者,因为对我来说,它并不是数据的“重新解释”(而只是分配缓冲区的机械方式),并且它看起来不像典型的reinterpret_cast
那样容易出现错误,但这是否正确呢?
§5.2.10/7
(C++11)。 - Cubbi