C++ - 指向基元的指针的 reinterpret_cast 的安全性

标签 c++ casting type-safety reinterpret-cast

我在评估的项目中遇到了一段代码,想知道以下转换是否安全:

void func(unsigned long* input);
...
int data = 42;
func(reinterpret_cast<unsigned long*>(&data));  
// Casting to remove compiler warnings about data type not matching type expected

我知道仅使用简单的 C 风格转换(即:(unsigned long*)&data)这是自找麻烦。 reinterpret_cast 会自动使这种类型的转换操作安全吗?

谢谢。

最佳答案

不,这不安全:程序行为未定义。

这是因为指针类型不相关。

关于C++ - 指向基元的指针的 reinterpret_cast 的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30714771/

相关文章:

java - 在 Java 中,我可以合并两个使用 JspWriter 和另一个 PrintWriter 的相似函数吗?

c++ - 有什么方法可以使用 C++ 阅读网页

c++ - 推送数组 C++?

javascript - 通过在 JavaScript 中添加数组将数字转换为字符串

类中泛型类型的Scala可变数量

java - GSON 和 InstanceCreator 问题

java - 为什么 "TypeToken Collections"被认为是类型安全的? (有效的 Java #29)

c++ - 如何杀死程序的所有进程?

c++ - pthread_join() 是否允许调用线程继续执行?

c - printf 的类型转换,但其他情况则不然