可疑指针到指针的转换(面积太小)

时间:2014-02-04 12:11:35

标签: c++ lint

我收到了我的逻辑警告 -

逻辑:

uint8_t     *m_data;

uint32_t* datap = (uint32_t*)m_data;

警告:

Info 826: Suspicious pointer-to-pointer conversion (area too small)

因为在赋值期间需要对值进行类型转换..而且我觉得在给定的代码行中没有错误。我可以抑制此警告或从构建中删除它

1 个答案:

答案 0 :(得分:2)

这不是正确的强制转换,您试图将指向字节的指针解释为指向4个字节的指针,并可能导致意外结果。如果uint32_t的对齐要求与uint8_t不同,您甚至可能会获得指针的不同值以及指向的值。如果要转换该值,只需执行:

uint32_t datap;
datap = static_cast<uint32_t>(*m_data);