c ++ - 当底层类型已知时,从unsigned char指针中输入punning

时间:2017-04-10 12:28:26

标签: c++ pointers undefined-behavior strict-aliasing type-punning

以下程序是否会调用任何未定义的行为?特别是,它是否打破了任何严格的别名规则?

void zeroInt(unsigned char *mem) {
    *reinterpret_cast<int *>(mem) = 0;
}

int main() {
    int value;
    zeroInt(reinterpret_cast<unsigned char *>(&value));
    return value;
}

我使用-O2 -Wstrict-aliasing=3使用gcc编译它并且它没有抱怨,但是gcc文档说它并没有捕获所有情况。

0 个答案:

没有答案