黑马程序员技术交流社区

标题: 在面向对象的语言中,函数内存开辟的问题 [打印本页]

作者: 王庆功    时间: 2014-9-22 17:30
标题: 在面向对象的语言中,函数内存开辟的问题
在面向对象的语言中,方法的内存是在类中开辟的。那函数呢,是在每个使用到该函数的对象中还是有一块单独的区域?而且对象是开辟在内存中的堆中的,函数是在堆中还是在栈里。糊涂了

作者: 卧龙小    时间: 2014-9-22 17:37
放在代码区,堆存放实体的成员变量,栈是临时分配的,比如方法值传递时 的临时参数
作者: 王庆功    时间: 2014-9-22 17:40
卧龙小 发表于 2014-9-22 17:37
放在代码区,堆存放实体的成员变量,栈是临时分配的,比如方法值传递时 的临时参数 ...

请问代码区又是在哪?还是代码区就是代码区,跟堆,栈是平行的关系?盼回复。我对内存不是很精
作者: 卧龙小    时间: 2014-9-22 17:45
本帖最后由 卧龙小 于 2014-9-22 17:55 编辑

怎么不可以发本地图啊, 我描述下,运行时数据时,会为对象分为3个区 栈区,堆区,代码区,其实还有其他的 暂时不扯(比如静态区)。他们分别有不同的功能1.栈区 具体方法执行结束之后,系统自动释放
2.堆区 存放实例化后的对象
3.代码区 存放程序中方法的二进制代码
他们都是内存中被分割后的区域,用于不同的功能

作者: 王绍明    时间: 2014-9-22 18:27
看作用域···
作者: 王庆功    时间: 2014-9-23 09:47
卧龙小 发表于 2014-9-22 17:45
怎么不可以发本地图啊, 我描述下,运行时数据时,会为对象分为3个区 栈区,堆区,代码区,其实还有其他的  ...

分为动态存储区,静态存储区,代码区。动态存储区就是老师讲的堆和栈,栈里面和堆里面就是你说的。静态存储区存储全局变量及静态变量等,代码区就是存储代码的二进制形式了。想起来了。谢谢
作者: 高三那年的球球    时间: 2014-9-23 09:55
求同~~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2