C++编译的程序占用的内存一般分为5个部分:
1.栈区(stack)
2.堆区(heap)
3.全局区(静态区)
4.文字常量区
5.程序代码区
1.栈区(stack)
对于这块内存区域来讲,都是由编译器自动分配释放,一般函数的参数值、局部变量的值等都存放在这里。
2.堆区(heap)
一般由程序员分配和释放,若程序员不释放,一般到程序结束时由操作系统自动回收。一般存储的是new或者malloc新开辟出来的内存。
这里引用别人的一个比喻:
使用栈就像去饭店点餐一样,只管点餐,吃完付账就走人,而使用堆的话就像自己买菜做饭,什么都要管,要管生成要管销毁。
注意:
使用new的时候一定要关心delete,使用malloc的时候一定要关心free。