堆和栈
从前,程序妈妈有两个娃娃,一个叫堆,一个叫栈,他们长得不一样,构成也不同,一个是亲生的 一个是后面养的 一天堆和栈就不服气的说,
栈:我是亲生的 怎么样 堆:虽然你是亲生的,计算机也喜欢我啊
栈:我拿钱(内存)比你快
堆:我自己挣(动态分配),而且每次可以挣得更多,你妈给的钱少(系统申请栈都是固定的)
栈:我比你好看(栈结构简单)
堆:我虽然比你长得着急一点,但是我比你厉害(就是用途更广,能做更多的功能)
栈:不服气, 我做了事情就不用管了 (就是系统会处理释放的事情)
堆: 自立更生,艰苦奋斗
(自己申请的内存,自己要释放)
程序妈妈
过来调节道,你妈都是我的好帮手,同样重要,你妈要相互配合,这样才能当我的好帮手,两个调皮
开心的笑了
总结
1. 栈 是由系统分配,释放,结构简单,一般存放值类型,函数指针之类的
2. 堆 是动态分配,用二叉树表示,容易产生碎片,效率要低一些,释放必须要自己来做,不然就会出意外的
从前,程序妈妈有两个娃娃,一个叫堆,一个叫栈,他们长得不一样,构成也不同,一个是亲生的 一个是后面养的 一天堆和栈就不服气的说,
栈:我是亲生的 怎么样 堆:虽然你是亲生的,计算机也喜欢我啊
栈:我拿钱(内存)比你快
堆:我自己挣(动态分配),而且每次可以挣得更多,你妈给的钱少(系统申请栈都是固定的)
栈:我比你好看(栈结构简单)
堆:我虽然比你长得着急一点,但是我比你厉害(就是用途更广,能做更多的功能)
栈:不服气, 我做了事情就不用管了 (就是系统会处理释放的事情)
堆: 自立更生,艰苦奋斗
程序妈妈
总结
1. 栈 是由系统分配,释放,结构简单,一般存放值类型,函数指针之类的
2. 堆 是动态分配,用二叉树表示,容易产生碎片,效率要低一些,释放必须要自己来做,不然就会出意外的
展开
6
3