我正在检查一个 win32 程序,我发现部分代码包含 reinterpret_cast<>
从一种结构到另一种结构。发生了什么
PKT_HEADER* pPktHeader = reinterpret_cast<PKT_HEADER*>( buffer );
pPktHeader
和 buffer
是两个结构指针。
我的问题是这里发生了什么?
最佳答案
迂腐地说,它是将一个指针转换为另一个指针,而不是将一种结构转换为另一种结构。在大多数环境中,无论对象是什么,指向对象的指针都是相同大小的 - 所以这可行。
它告诉编译器假定缓冲区实际上包含一个 PKT_HEADER
。如果是这样,那么它应该可以正常工作。如果 buffer
包含不同的数据结构,那么使用 pPktHeader
将是未定义的行为,任何事情都可能发生。
关于c++ - reinterpret_cast< > 从一个结构到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30894320/