第1个回答 推荐于2016-08-25
堆内存:保存对象的真正数据,都是每一个对象的属性内容
栈内存:保存的是一块堆内存的空间地址,可以把它想象成一个int型变量(每一个int型变量只能存放一个数值)所以每一块保留一块堆内存地址,但是为了方便理解,可以简单的讲栈内存之中保存的数据理解为对象的名称(Person per,保存的是per)
第2个回答 2011-10-20
栈和堆的地址是从两端相向增长的
栈很小,一般只有几十k,vc6好像是64k
堆很大,在win32的虚拟地址空间可以分配到2g的内存
栈由程序自动操作,包括局部变量,参数传递,函数跳转时的返回地址等信息
堆由程序员自行管理内存,优势,节省空间,不用时即释放,缺点,可能因使用不但造成内存泄露,野指针,造成程序错误
第3个回答 2011-10-20
怎么说呢?操作数栈是一种捆绑在线程上的线性容器,容器中的数据在栈中可以共享。线程在调用方法时将局部变量进行压栈操作,当方法调用结束时将栈中局部变量全部实现退栈操作。这实际上意味着只有在方法调用开始到方法调用结束这段期间局部变量才存在,一旦方法调用结束之后局部变量生命就结束了。