您当前的位置: 首页 >  c++

命运之手

暂无认证

  • 0浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【C++】【内存结构】栈和堆的区别

命运之手 发布时间:2021-07-02 09:53:15 ,浏览量:0

什么是栈和堆

我们这里说的栈和堆,是指内存空间中的两块不同区域,不是指数据结构中的Heap、Stack

之所以他们都叫栈和堆,是因为这两个词本来就是生活中描述外形的词语

只要外形差不多,都可以这么叫,一个是数据结构的外形,一个是内存结构的外形,如此而已

内存中的栈和堆有什么区别

栈是程序启动时,操作系统为进程预分配的固定内存空间

堆是程序运行时,向操作系统申请,动态分配的内存空间

寄存器对栈可以直接寻址,而堆则需要间接寻址

堆的空间较小,是队列结构,分配和查找速度更快

堆的空间很大,是二叉树结构,分配和查找速度慢

为什么要把内存分成栈和堆两块区域

如果全部用堆,显然对程序性能没任何提升

如果全部用栈,由于栈是在程序启动时立刻分配的,会导致每个进程都占用大量资源,整个系统的性能就会出现问题

因此把需要频繁调度的数据,像函数地址、对象地址等,放入栈区域,对程序和系统来说,效率是最佳的

C++中的栈和堆分别存放什么

在C++中,堆用来存储对象的完整字节数据

栈则来存放堆对象的地址,以及函数调用过程中产生的局部变量,参数和返回值等

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0385s