1.堆
堆是由程序员手动分配和释放,如果程序员没有释放,在程序结束后由系统回收。由于堆是程序员管理的,如果管理不当会导致内存泄露,内存泄露是指已经分配的内存空间无法被系统回收也无法被继续使用
2.栈
栈是由编辑器自动分配自动释放,用于存放局部变量和参数,栈内的对象先进后出,所以先创建的对象会后构析。栈由于是编辑器自动管理的,所以栈内的对象不会存在内存泄露问题。
3.常量区
存放常量字符串,程序结束后由系统释放。
4.静态变量区
存放全局变量和静态变量
静态变量和全局变量区别:
变量一般有两个属性,一个是作用域,一个是内存分布空间,静态变量的内存是分配在全局区(静态区)的,
全局变量与全局静态变量的区别:
扫描二维码关注公众号,回复:
10627623 查看本文章
(1)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
(2)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享, 即:全局静态变量对组成该程序的其它源文件是无效的。