Mrxuzj
孤独的新一
采纳率0%
2017-03-07 09:57

c++基础的问题,求大神帮忙解答!

最近学到c++类了,但是一直都搞不懂堆和栈到底指的是什么,有什么用处,求解答!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 4年前

    堆允许你存不限量的数据(当然受到物理内存总数的制约)
    栈允许你存储函数的局部变量,因为函数中还会调用函数,而且如果函数调用自身,必然一个变量名的变量需要为每次调用存储一个副本,所以用堆栈最合适。
    初学者理解这两点就可以了。

    点赞 2 评论 复制链接分享
  • gengziqiang1 伪造的时空 4年前
    栈由编译器自动分配释放,存放函数的参数值、局部变量的值等都放在栈中。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。 
    堆一般由程序员分配释放,若程序员不释放程序结束时由系统回收。堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的。堆的大小受限于计算机系统中有效的虚拟内存。
    

    http://blog.csdn.net/hairetz/article/details/4141043

    点赞 1 评论 复制链接分享
  • u014645204 徐如梦 4年前

    每一个程序在运行的时候都要有自己的资源,Linux为程序(严格讲应该是进程)分配4GB的虚拟独立地址空间。在0~3G的虚拟地址空间里,分为堆、栈,数据段,代码段,bss段。栈的作用主要是程序运行时申请的临时变量进行压栈操作,生存周期是整个函数。堆主要是malloc一块地址空间,存放数据,生存周期是整个函数(除非提前free)。堆只要是由编译器来帮你维护,栈是由程序员自己维护。

    点赞 评论 复制链接分享
  • a29562268 坤昱 4年前

    盏采用后进先出机制。

    点赞 评论 复制链接分享
  • a29562268 坤昱 4年前

    盏由编译器自动分配内存,盏最大1mb,盏以对象的形式(比如int a;a就是盏的分配内存; 堆由自己来分配内存,堆以指针的形式(比如int *a=new int ,a最大可以创建2的32次方内存)。

    点赞 评论 复制链接分享
  • CHN_JZ CHN_JZ 4年前

    堆可以在log(n)的时间得到极值,栈不是很好形容,大概就是个从底部进从底部取的数据结构

    点赞 评论 复制链接分享