在 C++ 中,静态或非静态变量在哪里?我的意思是在记忆中。
并且,什么时候初始化静态或非静态变量?
需要有人帮我弄清楚我的想法。谢谢!
那么C呢?相同的?
在 C++ 中,静态或非静态变量在哪里?我的意思是在记忆中。
并且,什么时候初始化静态或非静态变量?
需要有人帮我弄清楚我的想法。谢谢!
那么C呢?相同的?
它们可以放在编译器(或链接器或加载器)想要将它们放入内存的任何位置,C 和 C++ 标准不要求该级别的详细信息。他们只要求行为。
通常,静态成员在程序启动时(包括在编译时,以便它们简单地以已经初始化的状态加载)或在第一次使用之前被初始化一次。
驻留位置的非静态成员取决于对象的实例化方式。
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.
我不确定静态成员。
静态变量与全局变量位于同一位置,这往往由编译器确定,并在程序加载时创建并持续到程序结束
非静态变量放在哪里——无论你把它们放在哪里(在堆栈或堆上)