我从其他在线资源中了解到,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);
由于static
和extern
变量的持续时间在程序执行结束之前都是永久的,那么C++标准是否保证首先释放一个变量呢?又名,有没有保证pointer
不会因为试图释放已经释放的内存而导致访问冲突?
发布于 2018-06-05 06:43:06
变量和对象是有区别的。extern
使其成为有效的别名。它没有定义一个对象。它只为外部定义的对象提供一个您可以使用的名称。来自example.h
的pointer
将是有效的,只要main()
保留在调用堆栈上。
https://stackoverflow.com/questions/50689665
复制相似问题