繁体   English   中英

这些 nullptr 在哪里?

[英]Where are these nullptr located?

int* x = nullptr;
class_example* obj = nullptr;

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

堆? 还是堆栈?

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

所以在这个片段中:

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

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

 int* x = nullptr; class_example* obj = nullptr;

这些变量 x 和 obj 在哪里?

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

堆? 还是堆栈?

通常,两者都不是。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM