首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++静态对象中的类的静态数据成员和静态方法是什么?

C++静态对象中的类的静态数据成员和静态方法是什么?
EN

Stack Overflow用户
提问于 2017-09-16 15:23:35
回答 1查看 118关注 0票数 0

来自编程语言语用学,斯科特著

对象生存期通常对应于三种主要存储分配机制之一,用于管理对象的空间:

  1. 静态对象被赋予一个绝对地址,该地址在整个程序执行过程中被保留。
  2. 堆栈对象的分配和释放通常与子例程调用和返回结合在一起,顺序为first-out。
  3. 堆对象可以在任意时间被分配和释放。它们需要一个更通用(也更昂贵)的存储管理算法。

C++静态对象中的一个类的静态数据成员和静态方法是否在PLP书中?

是在编译时还是在运行时为类的静态数据成员和静态方法分配存储?

他们被分配到哪里?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-09-16 16:54:50

C++静态对象中的一个类的静态数据成员和静态方法是否在PLP书中?

静态数据成员是的。以及函数内部的静态对象,也是。也是在文件作用域中声明的对象。

是在编译时还是在运行时为类的静态数据成员和静态方法分配存储?

如果通过分配,您就意味着内存分配,它们的内存占用在编译时被保留,而空间实际上是由链接器在链接时(或者在加载时由动态加载器)在进程空间中分配的。在这两种情况下,早在运行时间之前。

但是,在调用main()函数之前,在文件或类作用域声明的静态对象是在运行时初始化的。

函数中定义的静态对象是不同的。它们是在第一次代码流到它们上面时初始化的。

他们被分配到哪里?

链接器或装载机决定的地方。这可以通过编写自己的链接器脚本来影响(恐怕超出了这个答案的范围)。

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

https://stackoverflow.com/questions/46255439

复制
相关文章

相似问题

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