相关疑难解决方法(0)

什么时候整数< - >指针转换实际上是正确的?

普通的民间传说说:

  • 类型系统存在是有原因的.整数和指针是不同的类型,它们之间的转换在大多数情况下是一种弊端,可能表示设计错误,应该避免.

  • 即使执行了这样的强制转换,也不应该对整数和指针的大小做出任何假设(强制void*转换int是使代码在x64上失败的最简单方法),而不是int应该使用intptr_tuintptr_t来自stdint.h.

知道什么时候执行这样的演员表真的有用吗?

(注意:可移植性价格的代码稍微短一点并不算"实际上有用".)


我知道一个案例:

  • 一些无锁多处理器算法利用了2 +字节对齐指针具有一定冗余的事实.然后,他们使用指针的最低位作为布尔标志.利用具有适当指令集的处理器,这可以消除对锁定机制的需要(如果指针和布尔标志是分开的,则需要锁定机制).
    (注意:甚至可以通过java.util.concurrent.atomic.AtomicMarkableReference在Java中安全地执行此操作)

更多的东西?

c c++ pointers casting

77
推荐指数
6
解决办法
6654
查看次数

标签 统计

c ×1

c++ ×1

casting ×1

pointers ×1