【问题标题】:Is there an integral type that has the same size and alignment as a pointer?是否存在与指针具有相同大小和对齐方式的整数类型?
【发布时间】:2016-03-01 23:45:22
【问题描述】:

是否存在与指针大小和对齐方式相同的整数类型?

std::intptr_tstd::uintptr_t,但我相信它们与指针本身的对齐方式不同。

【问题讨论】:

  • 它有什么不同?无论如何,使用整数类型为指针起别名是未定义的行为。
  • @BenVoigt 我不这样做。相反,我在运行时计算数据结构布局,用于虚拟机实现,如果整数与指针具有相同的布局,则更容易。
  • 但是,如果您在运行时进行结构布局,对齐应该不是问题:只需在任何需要对齐要求的地方添加显式填充字段就可以了。
  • 您可能想使用union。虽然这很少有用,但虚拟机是它们有意义的情况之一。

标签: c++ types memory-layout


【解决方案1】:

并不要求所有指针类型都具有相同的大小和对齐方式,这使得任何单个整数类型都不可能具有与所有指针类型相同的大小和对齐方式。

当然,对象指针、函数指针和指向成员的指针有不同的要求。但在某些平台上,即使char*int* 的大小也不同。

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多