堆与栈在C++编程中的区别详解.docVIP

  • 7
  • 0
  • 约2.93千字
  • 约 6页
  • 2016-10-01 发布于北京
  • 举报
堆与栈在C++编程中的区别详解.doc

堆与栈在C++编程中的区别详解   摘要:在日常使用中,我们经常会把C/C++编程中的堆和栈合称为堆栈,但实际上,堆和栈虽然同处于内存的动态存储区,却是有着完全不同的分配方式。本文对此进行深入的分析,以期从根本上区分这两个不同的概念。   关键词:C++编程 堆 栈   中图分类号:TP313   引言 在c++编程中,内存的分配和使用非常方便,其中堆和栈就是两种最常用的内存管理方式:堆是进程的全局数据内存存储区;栈是函数的局部数据内存存储区。在日常使用中,很多人对堆和栈的概念有所混淆,给初学者产生不小的困惑,所以有必要对堆和栈进行深入的研究,从根本上区分这两个不同的概念。   一、C++中五大内存分区   在C++中,内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。   堆,就是那些由new分配的内存块,它们的释放并非由编译器负责,而是由应用程序来控制的。一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。   栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。其中的变量通常是局部变量、函数参数等。   自由存储区是由malloc等分配的内存块,它和堆十分相似,区别在于它是用free来结束自己的生命的。   全局/静态存储区,全局变量和静态变量被分配到

文档评论(0)

1亿VIP精品文档

相关文档