C++语言内的堆和栈的区别

来源:互联网 发布:java xml 字节点 编辑:程序博客网 时间:2024/06/06 05:24

C++编译的程序占用的内存一般分为5个部分:

1.栈区(stack)

2.堆区(heap)

3.全局区(静态区)

4.文字常量区

5.程序代码区


1.栈区(stack)

对于这块内存区域来讲,都是由编译器自动分配释放,一般函数的参数值、局部变量的值等都存放在这里。

2.堆区(heap)

       一般由程序员分配和释放,若程序员不释放,一般到程序结束时由操作系统自动回收。一般存储的是new或者malloc新开辟出来的内存。


这里引用别人的一个比喻:

使用栈就像去饭店点餐一样,只管点餐,吃完付账就走人,而使用堆的话就像自己买菜做饭,什么都要管,要管生成要管销毁。


注意:

使用new的时候一定要关心delete,使用malloc的时候一定要关心free。

0 0
原创粉丝点击