这些nullptr位于哪里?

时间:2020-06-09 22:56:04

标签: c++ nullptr

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

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

堆?还是堆栈?

2 个答案:

答案 0 :(得分:4)

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

因此,在此代码段中:

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

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

答案 1 :(得分:1)

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

这些x和obj变量在哪里?

这些变量具有静态存储期限,因为它们是在名称空间范围中声明的,而没有thread_local关键字。语言标准未指定对象的位置。这取决于语言的实现。

堆?还是堆栈?

通常都不是。

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

相关问题