的reinterpret_cast< >从一个结构到另一个结构

时间:2015-06-15 07:14:04

标签: c++ casting

我正在通过一个win32程序,我发现一部分代码包含reinterpret_cast<>从一个结构到另一个结构。

会发生什么
PKT_HEADER* pPktHeader = reinterpret_cast<PKT_HEADER*>( buffer );

pPktHeaderbuffer是两个结构指针。

我的问题是这里发生了什么?

2 个答案:

答案 0 :(得分:1)

你身边有一个很大的误解。它是指向一个结构的指针的reinterpret_cast,指向另一个结构。效果与C风格的演员阵容相同。 buffer指向的内存块将被重新解释为PKT_HEADER结构。

答案 1 :(得分:1)

要迂腐,它会将一个指针投射到另一个,而不是一个结构。在大多数环境中,指向对象的指针大小相同,无论对象如何 - 所以这可以起作用。

它告诉编译器假设缓冲区实际上持有PKT_HEADER。如果确实如此,那么它应该可以正常工作。如果buffer包含不同的数据结构,那么使用pPktHeader将是未定义的行为,并且可能发生任何事情。