1.全局变量:在main函数调用前在静态数据区分配内存,程序运行结束后回收内存。
2.局部变量:
static局部变量:在第一次执行到该变量的定义位置时,在静态数据区分配内存。
非static 局部变量: 在程序运行到定义处时在栈上分配内存,运行到包含该变量定义的最内语句块的结束的时候回收内存。
3.堆对象: 执行到new运算符时分配内存,执行到delete时回收内存。
4.线程局部对象: 这个比前面3种复杂,这里就不说了。
C++中的每个对象名都直接指称对象本身,不是Java中的“引用", 名字是与对象紧密联系在一起的。判断一个对象在那个内存区域分配通常可以根据该对象名声明的位置来决定。
A tem(); 这样的语句通常会被编译器认为是函数声明,而不是定义变量。正确的是 A tem;, 这条语句定义了一个对象tem,并在栈上分配了内存。
直接将这个对象(所以成员数据)放到栈里
可以用NEW函数分配 也可以用malloc函数分配内存