?@@@ Effective C++ :堆和堆栈的区别?@@@
1。堆和堆栈的区别?
2。基于堆的对象是通过使用new产生的,那基于堆栈的对象是通过什么方式产生的呢?
3。什么时候使用堆比较好?什么时候使用堆栈比较好?
问题点数:20、回复次数:8Top
1 楼zjxushengyong(布袋和尚--木木)回复于 2003-08-04 15:02:13 得分 0
4。堆上申请的内存最后必须要用delete来释放,那堆栈上内存是靠什么原理来释放的呢?Top
2 楼zjxushengyong(布袋和尚--木木)回复于 2003-08-04 15:25:02 得分 0
高手们赶快回答啊...Top
3 楼shornmao(毛豆子[死猫])回复于 2003-08-04 17:03:02 得分 20
1)
堆(heap)空间是显式的申请和释放的,也就是受应用程序的代码控制的。
而栈/堆栈(stack)是由编译程序自动生成申请和释放的代码的,对应用程序来说是透明的,不需要担心存储空间的维护问题。
2)
基于栈的对象是直接定义变量产生的,此外,在参数传递和函数返回时都有可能发生。
3)
使用栈的目的,更快的内存分配和释放的速度,也更安全,不容易造成内存使用错误。
使用堆的目的,更灵活的控制对象创建和销毁的时机,多态的创建对象也必须使用堆。
4)
栈对象在他的生存期结束时,自动释放内存。由编译器处理,一般是push指令分配,pop指令释放。
Top
4 楼shornmao(毛豆子[死猫])回复于 2003-08-04 17:05:03 得分 0
说句老实话,Effective C++不适合你看,因为你的基本C++知识还没有掌握。
推荐你看C++编程语言,让你看原版的你可能无法接受,那就看中译本吧。Top
5 楼Meyer(断水)回复于 2003-08-04 17:21:13 得分 0
shornmao(死猫)
说的话,虽让人一时不能接受,但却是实话Top
6 楼zjxushengyong(布袋和尚--木木)回复于 2003-08-04 18:09:33 得分 0
首先感谢shornmao(死猫) 的热情回答!
再者对你的建议我会考虑的,我以前只看过几本比较浅显的c++的教材,所以很多知识掌握的不扎实,不过我想先看看其他经典点的书:如Effective C++,这样才能发现更多的有趣的东西,然后在回过头去看c++教程,这样收获应该更大些,你说是不是呢?
另外,希望你能给我们这些后闻道者给予更多的帮助,谢谢!Top
7 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2003-08-04 19:04:56 得分 0
Effective是给已经熟练掌握C++语法的人看的,讲述了很多编译器方面的知识,专搞提高、深入研究用Top
8 楼zjxushengyong(布袋和尚--木木)回复于 2003-08-05 15:00:01 得分 0
学习的方法有很多,就向通向远方的道路一样...条条道路通罗马...
也许有时候我们没有可能等一切条件都具备再去做某件事情...
Effective C++这本书我觉得也并不是很高深,它侧重的一些编程规范方面的知识...Top



