int a=0; class someClass{ int b; static int c; }; int main(){ int d=0; someClass *p=new someClass(); return 0; }
关于以上代码中的变量在内存中的存储位置描述正确的是()
在C++中,内存一般分为4个区域:
int a=0; class someClass{ int b; static int c; }; int main(){ int d=0; someClass *p=new someClass(); return 0; }
int a = 0;属于全局变量,在全局数据区
int b;至于类的普通成员变量b,该类的实例是通过new运算符生成的,产生了一个类指针p,那么b就存储在堆区。如果是someClass p;
那么b就存储在栈区,和类的实例的产生方式有关。
static int c;静态数据位于全局数据区
int d;局部变量,位于栈区
让我们分析代码中各变量的存储位置:
综上所述:
所以,正确的描述是A:堆、栈、全局区均有变量。
int a = 0;属于全局变量,在全局数据区
int b;至于类的普通成员变量b,该类的实例是通过new运算符生成的,产生了一个类指针p,那么b就存储在堆区。如果是someClass p;
那么b就存储在栈区,和类的实例的产生方式有关。
static int c;静态数据位于全局数据区
int d;局部变量,位于栈区