黑马程序员技术交流社区
标题:
static修饰的成员变量或者成员函数在内存中的位置?
[打印本页]
作者:
tpsu88
时间:
2013-6-17 23:36
标题:
static修饰的成员变量或者成员函数在内存中的位置?
本帖最后由 孙百鑫 于 2013-6-19 18:47 编辑
static修饰类中的成员变量或者成员函数在内存中的位置?
有说栈的,有说方法区(说这个的多)。
我想知道是以下内存中的哪里?
1、heap(可定不是吧) 2、stack(栈) 3、
data segment
区 4、
code segment
区
我听毕老师说是在:方法区\共享区\数据区 ,属于上面哪个区里,还是说
在这四个以外的区域!!
求一个官方说法!!!
作者:
王靖远
时间:
2013-6-18 00:47
static修饰的成员变量和成员方法,是属于类专有的,所有该类的实例都共享同一副本。类加载了静态方法就会被加载入静态方法区,静态成员是共享的,也可以叫共享区吧。
作者:
刘利民
时间:
2013-6-18 01:03
毕老师所说的方法区、共享区、数据区,实际就是源于汇编语言的数据段(data segment)中的一份存储区域,。而段式存储是内存管理的一架构,这个只需了解就行。数据段是指用来存放程序中已初始化的全局变量的一块内存区域它的分配方式是静态(static)的。所以要注意的是那它即不属栈内存也不属堆内存。
此外:堆:是存放引用类型的。比如:string inStack = "在堆中";inStack 这个对象变量就是在栈中了,而它是引用类型,那么它的value就在堆中了。
栈:存局部变量,定义的参数,比如int,char之类的,以及调用现场存在栈区,在函数结束时,系统会自动收回存储单元。
作者:
不破大地
时间:
2013-6-18 08:13
data segment,在该独立的区域,该区的所有信息和数据可以被大众共享,就像咱论坛,不管是会员与否,都可以观看、分享咱信息。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2