heap(堆)和栈的区别

面试经常问到这个问题:自己一定要总结一下。之前都是死记答案,现在要理解,理解了就会编程,可以用了。

1、系统的内存空间分布!!

heap(堆)和栈的区别

 2、比较

c++里面的堆和栈

heap(堆)和栈的区别

 数据结构中的堆和栈

  • 栈:数据逻辑结构中的线性结构,先进后出,桶结构
  • 堆:树结构,见到的有二叉堆。根节点值最大或最小!

3、堆中new的使用

 1 #include <iostream>
 2 #include<stdlib.h>
 3 using namespace std;
 4 void main(){
 5     int *ip, size;
 6     cout << "请输入尺寸大小" << endl;
 7     cin >> size;
 8     ip = new int[size];//c++里面堆分配**
 9     if (ip == NULL)
10     {
11         cout << "分配地址失败" << endl;
12         exit(1);//exit(0):正常退出程序 exit(1):非正常运行导致退出程序
13     }
14     cout << "请输入待处理数据" << endl;
15     for (int j = 0; j < size; j++){
16         cin >> ip[j];
17     }
18     cout << "输出ip存放的数据" << endl;
19     for (int j = 0; j < size; j++){
20         cout << ip[j] << endl;
21     }
22     delete[]ip;
23 
24 }