在c++中,静态或非静态变量放在哪里?我是说在记忆中。
还有,什么时候初始化静态或非静态变量?
我需要有人帮我理清思路。谢谢!
那C呢?一样吗?
发布于 2011-03-14 13:44:23
它们可以到达编译器(或链接器或加载器)想要将它们放入内存的任何地方,C和C++标准并没有要求这种级别的细节。他们只是强制执行行为。
通常,静态成员被初始化一次,要么在程序启动时(包括在编译时,因此它们只是在已经初始化的状态下加载),要么就在第一次使用之前。
发布于 2011-03-14 13:46:54
非静态成员的驻留位置取决于对象的实例化方式。
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.我对静态成员不太确定。
发布于 2011-03-14 13:51:23
静态变量与全局变量位于相同的位置,全局变量往往由编译器确定,并在程序加载时创建,并持续到程序结束
无论你把它们放在什么地方(堆栈或堆上),非静态化都会发生。
https://stackoverflow.com/questions/5295159
复制相似问题