int* x = nullptr;
class_example* obj = nullptr;
我知道nullprt是什么,但是这些x和obj变量在哪里?
堆?还是堆栈?
答案 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的内存段中。