首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++静态非静态

问c++静态非静态
EN

Stack Overflow用户
提问于 2011-03-14 13:42:08
回答 3查看 529关注 0票数 1

在c++中,静态或非静态变量放在哪里?我是说在记忆中。

还有,什么时候初始化静态或非静态变量?

我需要有人帮我理清思路。谢谢!

那C呢?一样吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-14 13:44:23

它们可以到达编译器(或链接器或加载器)想要将它们放入内存的任何地方,C和C++标准并没有要求这种级别的细节。他们只是强制执行行为。

通常,静态成员被初始化一次,要么在程序启动时(包括在编译时,因此它们只是在已经初始化的状态下加载),要么就在第一次使用之前。

票数 11
EN

Stack Overflow用户

发布于 2011-03-14 13:46:54

非静态成员的驻留位置取决于对象的实例化方式。

代码语言:javascript
复制
class foo
{
    int num ; // Non-Static member 
    // ....
};

foo obj ; // In this case `num` resides on stack. In fact, obj it self resides on stack
foo *temp = new foo;  // In this case `num` resides on heap or in memory location acquired from the free store.

我对静态成员不太确定。

票数 0
EN

Stack Overflow用户

发布于 2011-03-14 13:51:23

静态变量与全局变量位于相同的位置,全局变量往往由编译器确定,并在程序加载时创建,并持续到程序结束

无论你把它们放在什么地方(堆栈或堆上),非静态化都会发生。

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

https://stackoverflow.com/questions/5295159

复制
相关文章

相似问题

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