首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >外部变量与静态变量的持续时间

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

Stack Overflow用户
提问于 2018-06-05 06:34:04
回答 1查看 51关注 0票数 1

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

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

代码语言:javascript
复制
//example.h
extern shared_ptr<object> pointer;

和一个代码文件:

代码语言:javascript
复制
//example.cpp
class object { //implementation doesn't matter, just for example
};

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

由于staticextern变量的持续时间在程序执行结束之前都是永久的,那么C++标准是否保证首先释放一个变量呢?又名,有没有保证pointer不会因为试图释放已经释放的内存而导致访问冲突?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 06:43:06

变量和对象是有区别的。extern使其成为有效的别名。它没有定义一个对象。它只为外部定义的对象提供一个您可以使用的名称。来自example.hpointer将是有效的,只要main()保留在调用堆栈上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50689665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档