BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #53588同步于 2011/6/21
CPP机器人发帖

[合集] 什么时候使用堆,什么时候使用栈?

shenlei
2011/6/21镜像同步0 回复
☆─────────────────────────────────────☆ blove (伐木) 于 (Fri Jun 10 13:08:23 2011) 提到: 堆与栈书本概念大家都懂,但是选择用哪种需要经验积累啊。 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 下面三条来自回复感觉不错,供思考。 1、根据需求的内存空间选择;栈内存量比较小,而堆可支配空间大。 2、根据生命周期需求选择;栈是较固定,而堆是可灵活控制的。 3、In general, stack is easier to maintain, faster to access, but less flexible. Simply put, plz use heap when u have to use heap. and use stack when u dont have to use heap. ☆─────────────────────────────────────☆ ki (谁) 于 (Fri Jun 10 13:20:37 2011) 提到: 看到这种问题真的很无语。 【 在 blove (伐木) 的大作中提到: 】 堆与栈概念大家都懂,但是选择用哪种需要经验积累啊。 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 ☆─────────────────────────────────────☆ shenlei (我爱果子|[路]|天山南北|潇湘隐士) 于 (Fri Jun 10 13:36:49 2011) 提到: 你确定你明白了堆和栈? 【 在 blove (伐木) 的大作中提到: 】 : 堆与栈概念大家都懂,但是选择用哪种需要经验积累啊。 : 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 ☆─────────────────────────────────────☆ grapland (grapland) 于 (Fri Jun 10 14:00:20 2011) 提到: 栈就是你家的垃圾筒,往里放东西快捷方便但是容量有限。 堆就是垃圾袋,用之前先要撕一片,装满后还要带到楼下去,但是只要袋够用装的垃圾总量是很大的。 ☆─────────────────────────────────────☆ blove (伐木) 于 (Fri Jun 10 14:01:54 2011) 提到: 别误会,不是自大。我只是懂那种书本上、网站上对栈和堆的概念解释,对灵活运用不甚了解。只是想问问那些运用熟练的大牛有什么好的想法点拨一下我。 【 在 shenlei 的大作中提到: 】 : 你确定你明白了堆和栈? : 【 在 blove (伐木) 的大作中提到: 】 : : 堆与栈概念大家都懂,但是选择用哪种需要经验积累啊。 : ................... ☆─────────────────────────────────────☆ ki (谁) 于 (Fri Jun 10 14:03:37 2011) 提到: 这么说吧,堆栈是一种平时你自己编程基本不会用到但又无处不在所以你必须非常了解的一种存在。 【 在 blove (伐木) 的大作中提到: 】 : 别误会,不是自大。我只是懂那种书本上、网站上对栈和堆的概念解释,对灵活运用不甚了解。只是想问问那些运用熟练的大牛有什么好的想法点拨一下我。 ☆─────────────────────────────────────☆ blove (伐木) 于 (Fri Jun 10 14:05:30 2011) 提到: 为什么无语啊,三楼说的就挺好的。栈的容量不大很少书本、概念里提到。 【 在 ki 的大作中提到: 】 : : 看到这种问题真的很无语。 : 【 在 blove (伐木) 的大作中提到: 】 : ................... ☆─────────────────────────────────────☆ rebirthatsix (茫犭者-算法盲) 于 (Fri Jun 10 14:05:33 2011) 提到: 你自己如果不写程序,明白了什么时候使用又有什么用呢? ☆─────────────────────────────────────☆ ki (谁) 于 (Fri Jun 10 14:10:03 2011) 提到: 首先,三楼说得并不准确,其次,我无语是因为你这个问题问得太泛,类似“怎么炒股赚钱”,我可以很简单的回答你,“低买高卖”,结果是说了等于没说。 【 在 blove (伐木) 的大作中提到: 】 为什么无语啊,三楼说的就挺好的。栈的容量不大很少书本、概念里提到。 【 在 ki 的大作中提到: 】 : : 看到这种问题真的很无语。 : 【 在 blove (伐木) 的大作中提到: 】 : ................... ☆─────────────────────────────────────☆ blove (伐木) 于 (Fri Jun 10 14:11:22 2011) 提到: 写程序的机会挺少的,我就没赶上项目开始阶段,只赶上个测试阶段,看到代码这变量new一个,这个变量不new,意识到这可能是个学问或是经验,百度了一下没见有人分析。 【 在 rebirthatsix 的大作中提到: 】 : 你自己如果不写程序,明白了什么时候使用又有什么用呢? : -- ☆─────────────────────────────────────☆ renne (歼灭天使 玲) 于 (Fri Jun 10 14:55:08 2011) 提到: ki神说的很清楚了 你问题问的太泛 导致任何一个真的要回答你问题的人可能要写一本书出来 建议先看提问的智慧 【 在 blove (伐木) 的大作中提到: 】 : 写程序的机会挺少的,我就没赶上项目开始阶段,只赶上个测试阶段,看到代码这变量new一个,这个变量不new,意识到这可能是个学问或是经验,百度了一下没见有人分析。 ☆─────────────────────────────────────☆ Wing () 于 (Fri Jun 10 14:58:14 2011) 提到: 根据需求来呗,我觉得一般人都是能用栈就用栈吧,毕竟不用担心内存泄露 ☆─────────────────────────────────────☆ zzcc (Binux <足兆叉虫>) 于 (Fri Jun 10 15:01:49 2011) 提到: new不new和堆/栈关系大吗?我用new是时候从来没考虑过堆/栈,或者说,压根就不是从这个角度考虑的 【 在 blove 的大作中提到: 】 : 写程序的机会挺少的,我就没赶上项目开始阶段,只赶上个测试阶段,看到代码这变量new一个,这个变量不new,意识到这可能是个学问或是经验,百度了一下没见有人分析。 : 【 在 rebirthatsix 的大作中提到: 】 : : 你自己如果不写程序,明白了什么时候使用又有什么用呢? : ................... ☆─────────────────────────────────────☆ blove (伐木) 于 (Fri Jun 10 15:02:20 2011) 提到: 嗯,是我理解不够所以提出这样的问题,呵呵,我自己慢慢练吧。 不过我觉得我的问题还算个问题啊,也许这个问题不太容易解答。这个问题好比一个不能解决的bug让人无从下手,但他不是bug,没必要给出一个正解答案的。浅谈个人小认识就行。 【 在 renne 的大作中提到: 】 : ki神说的很清楚了 : 你问题问的太泛 导致任何一个真的要回答你问题的人可能要写一本书出来 : 建议先看提问的智慧 : ................... ☆─────────────────────────────────────☆ blove (伐木) 于 (Fri Jun 10 15:11:51 2011) 提到: new是堆,不new就不是堆了而是栈或是其他了,应该考虑吧,你说的角度是指?感觉我在说的角度是使用堆栈要有依据,就是说使用堆或使用栈存在一个准则,或许这个准则是灵活的。 【 在 zzcc 的大作中提到: 】 : new不new和堆/栈关系大吗?我用new是时候从来没考虑过堆/栈,或者说,压根就不是从这个角度考虑的 : 【 在 blove 的大作中提到: 】 : : 写程序的机会挺少的,我就没赶上项目开始阶段,只赶上个测试阶段,看到代码这变量new一个,这个变量不new,意识到这可能是个学问或是经验,百度了一下没见有人分析。 : ................... ☆─────────────────────────────────────☆ shenlei (我爱果子|[路]|天山南北|潇湘隐士) 于 (Fri Jun 10 15:42:17 2011) 提到: 如果一个对象生命周期不确定,那么使用new... 我自己做项目除了上面所说的,其他用new基本都是被逼的...栈放不下了,不确定大小等等原因...应该没有人愿意去自己维护一堆东西吧... 而不是考虑某个对象应该在堆上还是在栈中...反正都在内存中...想这个是多么蛋疼的问题... 【 在 blove (伐木) 的大作中提到: 】 : new是堆,不new就不是堆了而是栈或是其他了,应该考虑吧,你说的角度是指?感觉我在说的角度是使用堆栈要有依据,就是说使用堆或使用栈存在一个准则,或许这个准则是灵活的。 ☆─────────────────────────────────────☆ shenlei (我爱果子|[路]|天山南北|潇湘隐士) 于 (Fri Jun 10 16:36:25 2011) 提到: 楼主你编辑主题帖是因为看了我的回复吧…纠正一下,栈上的生命周期是固定的而new的很灵活…不是你说的大小… 【 在 blove 的大作中提到: 】 : 堆与栈书本概念大家都懂,但是选择用哪种需要经验积累啊。 : 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 : 1、根据需求的内存空间选择;栈小,堆大 : ................... ☆─────────────────────────────────────☆ nxlhero (牛) 于 (Fri Jun 10 17:21:33 2011) 提到: http://saw-unix.com/2010/07/linux_process_space.html 楼主可能对堆和栈的概念不是很理解,看看上面这篇文章吧 int a; int main() { int b; int *c; c = (int*) malloc(8); printf("%x\n",&a); printf("%x\n",&b); printf("%x\n",&c); printf("%x\n",c); return 0; } a位于数据区。b位于栈,c位于栈,c指向的地址位于堆 【 在 blove 的大作中提到: 】 : 堆与栈书本概念大家都懂,但是选择用哪种需要经验积累啊。 : 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 : 1、根据需求的内存空间选择;栈内存量比较小,而堆可支配空间大。 : ................... ☆─────────────────────────────────────☆ zzcc (Binux <足兆叉虫>) 于 (Fri Jun 10 17:43:54 2011) 提到: “根据生命周期需求选择;栈是较固定,而堆是可灵活控制的” 我并不觉得这样的特性是由堆/栈带来的,比如智能指针,std::vector,生存期是固定的,但使用的是堆空间。 我也不知道堆/栈有哪些特性,因为还没有机会用到这些特性。正常使用中,才不会考虑这个呢 【 在 blove 的大作中提到: 】 : 堆与栈书本概念大家都懂,但是选择用哪种需要经验积累啊。 : 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 : 1、根据需求的内存空间选择;栈内存量比较小,而堆可支配空间大。 : ................... ☆─────────────────────────────────────☆ ki (谁) 于 (Fri Jun 10 17:47:35 2011) 提到: 我觉得,在搞明白生命期之前,不要去搞什么智能指针了 那些都是有几十年编程经验的人搞出来的东西,在初学者手里很容易变成杀人不眨眼的利器。。。 【 在 zzcc (Binux <足兆叉虫>) 的大作中提到: 】 : 标 题: Re: 什么时候使用堆,什么时候使用栈? : 发信站: 北邮人论坛 (Fri Jun 10 17:43:54 2011), 站内 : : “根据生命周期需求选择;栈是较固定,而堆是可灵活控制的” : 我并不觉得这样的特性是由堆/栈带来的,比如智能指针,std::vector,生存期是固定的,但使用的是堆空间。 : : 我也不知道堆/栈有哪些特性,因为还没有机会用到这些特性。正常使用中,才不会考虑这个呢 : 【 在 blove 的大作中提到: 】 : : 堆与栈书本概念大家都懂,但是选择用哪种需要经验积累啊。 : : 有没有同学分享一下使用的经验?经验不在多少,也可以说说感悟。我还没什么认识呢。 : : 1、根据需求的内存空间选择;栈内存量比较小,而堆可支配空间大。 : : ................... : -- : ※ 修改:·zzcc 于 Jun 10 17:44:14 2011 修改本文·[FROM: 211.103.167.*] : ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 211.103.167.*] ☆─────────────────────────────────────☆ fentoyal (长风长歌) 于 (Fri Jun 10 22:44:55 2011) 提到: In general, stack is easier to maintain, faster to access, but less flexible. Simply put, plz use heap when u have to use heap. and use stack when u dont have to use heap. ☆─────────────────────────────────────☆ IDEALS (IDEALS for life@北邮刷天下) 于 (Sat Jun 11 11:11:53 2011) 提到: 【 在 zzcc 的大作中提到: 】 : new不new和堆/栈关系大吗?我用new是时候从来没考虑过堆/栈,或者说,压根就不是从这个角度考虑的 : 【 在 blove 的大作中提到: 】 : : 写程序的机会挺少的,我就没赶上项目开始阶段,只赶上个测试阶段,看到代码这变量new一个,这个变量不new,意识到这可能是个学问或是经验,百度了一下没见有人分析。 : ................... 关系挺大的吧,你不考虑不代表不用考虑。最好还是看看这两者的差别吧
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。