什么是“堆”,"栈","堆栈","队列",它们的区别?

 时间:2026-02-14 09:38:13

1、堆:通俗的理解就是一个特殊的数据结构。在c、c++等程序中。堆的内存是交给你去控制的。你分配了内存不去释放。就内存泄露了。比如下面的代码:

int main()

{

    char *a = new char[1024];

    return 1;

}

这就是在堆上申请内存。这里没有delete,就内存泄露了。

什么是“堆”,

2、栈:也叫堆栈。这个数据结构很好理解。就是一个单向的链表。先入后出。栈的内存的分配是编辑器搞定的。函数执行完成。栈上的内存就会释放掉。我们看下面的代码:

int main()

{

    char a[1024] = {0};

    return 1;

}

这个就是栈上的内存。你不去管他,main函数执行玩,内存「自动」释放。

什么是“堆”,

3、队列就是一个标准的数据结构,先入先出。我们看下面的代码:

#include <iostream>

#include <string>

#include <queue>

using namespace std;

int main()

{

    queue<int> m_list;

    m_list.push(1);

    m_list.push(2);

    m_list.push(3);

    for(int i = 0; i < m_list.size(); i++)

    {

        cout << m_list.front() << endl;

        m_list.pop();

    }

    return 1;

}

什么是“堆”,

4、与之对应堆栈,正好相反,他是先入后出。我们看下面的代码:

#include <iostream>

#include <string>

#include <queue>

#include <stack>

using namespace std;

int main()

{

    stack<int> m_list;

    m_list.push(1);

    m_list.push(2);

    m_list.push(3);

    for(int i = 0; i < m_list.size(); i++)

    {

        cout << m_list.top() << endl;

        m_list.pop();

    }

    return 1;

}

什么是“堆”,

5、队列更为常用,尤其是异步的程序。线程间的通信都是通过「消息队列」来完成。所以队列的用法还是要多关注下。

什么是“堆”,

  • 《蜘蛛侠:时空边缘》流程图文攻略(12—16章)
  • 数码宝贝新世纪究极v龙兽如何获取
  • 龙骑士Ⅲ游戏攻略
  • 英雄联盟空白名字教程2019
  • human fall flat操作设置技巧
  • 热门搜索
    香格里拉旅游地图 旅游同业 图瓦卢旅游 河北省旅游景点大全 始兴旅游景点大全 花莲旅游攻略 厦门地图旅游地图 惠安旅游景点大全 旅游结婚 广州旅游博览会