C++类内存是如何分配的??
今天听完老师将java的类内存分配,我想知道C++的类内存是如何分配的?比如我建了一个A类,主函数里面写Atemp(),是不是也是象Java一样temp是一个A类型变量,...
今天听完老师将java的类内存分配,我想知道C++的类内存是如何分配的?
比如我建了一个A类,主函数里面写A temp(),是不是也是象Java一样temp是一个A类型变量,放在栈内存里面,里面放着所指向的A类对象属性的堆内寸?还是在栈内存里面直接建立一个A变量temp,里面放着对象的属性?或者是其他的,我C++学的不多,希望明白 展开
比如我建了一个A类,主函数里面写A temp(),是不是也是象Java一样temp是一个A类型变量,放在栈内存里面,里面放着所指向的A类对象属性的堆内寸?还是在栈内存里面直接建立一个A变量temp,里面放着对象的属性?或者是其他的,我C++学的不多,希望明白 展开
3个回答
展开全部
1.全局变量:在main函数调用前在静态数据区分配内存,程序运行结束后回收内存。
2.局部变量:
static局部变量:在第一次执行到该变量的定义位置时,在静态数据区分配内存。
非static 局部变量: 在程序运行到定义处时在栈上分配内存,运行到包含该变量定义的最内语句块的结束的时候回收内存。
3.堆对象: 执行到new运算符时分配内存,执行到delete时回收内存。
4.线程局部对象: 这个比前面3种复杂,这里就不说了。
C++中的每个对象名都直接指称对象本身,不是Java中的“引用", 名字是与对象紧密联系在一起的。判断一个对象在那个内存区域分配通常可以根据该对象名声明的位置来决定。
A tem(); 这样的语句通常会被编译器认为是函数声明,而不是定义变量。正确的是 A tem;, 这条语句定义了一个对象tem,并在栈上分配了内存。
2.局部变量:
static局部变量:在第一次执行到该变量的定义位置时,在静态数据区分配内存。
非static 局部变量: 在程序运行到定义处时在栈上分配内存,运行到包含该变量定义的最内语句块的结束的时候回收内存。
3.堆对象: 执行到new运算符时分配内存,执行到delete时回收内存。
4.线程局部对象: 这个比前面3种复杂,这里就不说了。
C++中的每个对象名都直接指称对象本身,不是Java中的“引用", 名字是与对象紧密联系在一起的。判断一个对象在那个内存区域分配通常可以根据该对象名声明的位置来决定。
A tem(); 这样的语句通常会被编译器认为是函数声明,而不是定义变量。正确的是 A tem;, 这条语句定义了一个对象tem,并在栈上分配了内存。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询