黑马程序员技术交流社区

标题: 关于内存的5个分区“堆” [打印本页]

作者: sen    时间: 2014-4-13 21:47
标题: 关于内存的5个分区“堆”
本帖最后由 sen 于 2014-5-20 11:59 编辑

内存的5个分区中的四个大体百度了之后明白了意思。
唯有“堆”不太能理解,在视屏中老师又说是“对象”,
请问有没有具体一点的解释呢?

作者: blz01003hm    时间: 2014-4-13 22:24
堆是给程序员用的
你用malloc申请的空间 就是堆里的
作者: 程序猿-2014    时间: 2014-4-14 00:37
堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
而且堆区使我们程序员的地盘   但是如果管理不好的话   可能会造成内存泄露   

作者: 少先队员    时间: 2014-4-14 01:05
堆内存就是new出来的
   每个堆都有对应的对象。     每个对象都是实体。
  意思是  堆就是实体。

作者: 李烨    时间: 2014-4-14 08:18
C++像这种堆栈的说法很明确,但是C++说白点,就是C的衍生,一些基本的栈、堆、静态区、代码区的概念,C里面也有,只是见到的不多。数据结构就是会用到栈堆的概念。
在C语言中  执行
char *p = new char [20];
这就是堆分配。
作者: 于清扬    时间: 2014-4-14 09:53
堆内存是使用链表管理的,这个不理解也没事,其实你只需要知道OC的对象是存在堆中,而堆中的内存是需要程序员自己来分配、释放内存的。。

在ARC中,并不是不需要管理内存,ARC是一种编译器特性,会自动帮程序员生成内存管理的代码。苹果这样做,是为了提高开发的效率,让程序员吧大部分的精力放在业务逻辑上。
作者: sen    时间: 2014-4-15 15:09
好的 谢谢大家




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