返回介绍

1.2 生命周期

发布于 2024-10-12 21:58:08 字数 890 浏览 0 评论 0 收藏 0

存储期限(storage duration)决定了对象的生命周期。

作用域(scope)和生命周期(lifetime)是不同概念。作用域指标识符(如变量名)有效范围,生命周期则是对象存活时间段。一个对象可被多个标识符引用,单个标识符并不能完全决定对象生命周期。

底层存储:

  • 自动 (auto):初始值未定,仅定义所在块( {scope} )内有效。
  • 静态 (static):自动初始化,进程运行期间有效。
  • 线程 (thread):线程启动时初始化,线程运行期间有效。
  • 分配 (alloc):手工分配和释放。

对象声明:

  • auto :自动存储期限。
  • register :提示编译器尽可能使用寄存器。
  • static :无链接或内链接,静态存储期限。
  • extern :外链接,静态存储期限。
  • _Thread_local :线程局部对象。

静态局部变量的值保存在 .data/.bss,会在进程启动时初始化。实际函数内指令直接以地址读写,并未有任何初始化操作。其效果类似有限作用域的全局变量。

外链接符号可被其他模块(源文件)引用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文