以下程序是否会调用任何未定义的行为?特别是,它是否打破了任何严格的别名规则?
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文档说它并没有捕获所有情况。