外部变量与静态变量的持续时间

时间:2018-06-04 22:34:04

标签: c++

我从其他在线资源中了解到,static变量按照它们被声明的相反顺序(在同一文件范围内)被释放。但是,我不知道extern变量如何发挥作用。

为简单起见,我们假设有一个头文件:

//example.h
extern shared_ptr<object> pointer;

和代码文件:

//example.cpp
class object { //implementation doesn't matter, just for example
};

static const object();
shared_ptr<object> pointer(object);

由于staticextern变量的持续时间是永久性的,直到程序执行完成,C ++标准是否保证首先释放一个? Aka,是否保证pointer不会因尝试释放已释放的内存而导致访问冲突?

1 个答案:

答案 0 :(得分:0)

变量和对象之间存在差异。 extern使其有效地成为别名。它没有定义一个对象。它只为外部定义的对象提供了一个可以使用的名称。只要pointer保留在callstack上,example.h中的main()就会生效。