【问题标题】:Where are these nullptr located?这些 nullptr 在哪里?
【发布时间】:2020-06-09 22:56:04
【问题描述】:
int* x = nullptr;
class_example* obj = nullptr;

我知道 nullprt 是什么,但是这些变量 x 和 obj 位于哪里?

堆?还是堆栈?

【问题讨论】:

  • 不可能从给定的代码示例中分辨出来。

标签: c++ nullptr


【解决方案1】:

指针只是普通变量,碰巧有 是其他对象的地址(这些地址可能在堆上)。

所以在这个sn-p中:

int main() 
{
  int* x = nullptr;
  class_example* obj = nullptr;
}

就像常规的局部变量一样,这些指针将位于堆栈上。

【讨论】:

    【解决方案2】:
    int* x = nullptr;
    class_example* obj = nullptr;
    

    这些变量 x 和 obj 在哪里?

    这些变量具有静态存储持续时间,因为它们是在没有 thread_local 关键字的命名空间范围内声明的。语言标准没有指定对象的位置。由语言实现来决定。

    堆?还是堆栈?

    通常都不会。

    例如,在 ELF 可执行格式中,零初始化静态变量将位于名为 BSS 的内存段中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2014-11-30
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      相关资源
      最近更新 更多