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

2025-10-29 16:10:05

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

什么是“堆”,

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢