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);
由于static
和extern
变量的持续时间在程序执行完成之前是永久的,C++ 标准是否保证首先释放一个变量?Aka,是否有保证pointer
不会因为尝试释放已释放的内存而导致访问冲突?
解决方案
变量和对象是有区别的。Anextern
使其有效地成为别名。它没有定义对象。它只为外部定义的对象提供一个您可以使用的名称。只要保留在调用堆栈上,pointer
from就有效。example.h
main()
推荐阅读
- typescript - 单击事件返回未定义。为什么?
- c# - SignalR Core 和接收消息
- storyboard - 在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?
- markdown - Markdown/Hugo 帮助:如何定义一个包含项目符号的字符串?
- linux - 如何在 Linux shell 脚本的变量中存储 echo 及其信息,而不会丢失 echo 关键字
- javascript - 将复选框输出存储到全局状态
- javascript - 如何在 Cypress 中创建 isProduction() 函数
- flutter - ImagePicker 崩溃颤振 1.22.1
- c++ - 如何在十六进制编辑器中查找变量
- django - Django不显示图像字段