C++局部变量、全局变量的作用域及范围&动态内存管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010853261/article/details/84929825

本文主要介绍C++中的局部变量、全局变量、以及动态内存管理的变量。本文不涉及静态变量static,所以描述的观点不包括static变量。

局部变量和全局变量

局部变量一般指函数内部的局部变量,这部分的变量保存在栈里面,当函数调用结束,这些局部变量就会被自动释放。可以说这部分变量是系统自动管理的

全局变量或则是file scope的变量。这部分变量存储在 全局/静态存储区,这部分变量的作用域是从声明点到文件末尾都是可见的,生命周期也是一直存在知道程序结束。

动态内存管理

不管是函数局部变量还是file scope变量都是由系统自动管理的,还有第三种存储形式的变量dynamic。

dynamic内存是由程序的空闲空间分配来的,即heap memory,这部分内存必须由程序员编码自行管理,其分配通过new关键字,释放通过delete关键字。

new表达式形式是:

new Type;
或则
new Type(init_value)

Type可以是任意内置数据类型,也可以是程序知道的class类型。
比如:

int *p;
p = new int
或则
int *pi = new int(1024);

detele表达式的使用方式是:

delete variable;

比如

delete p;

对于数组对象的的delete必须在delete和变量之间加一个[],比如

delete [] arr

注意:进行delete时候不需要我们手动做是否为空的check,编译器会帮我们做check。

通过new生成的堆对象如果不进行手动的delete会一直存在,造成内存泄漏(memory leak)。

猜你喜欢

转载自blog.csdn.net/u010853261/article/details/84929825