C++——内存管理

C++中有三种内存管理的方式:自动存储,静态存储和动态存储;

自动存储

在函数内部定义的普通变量的存储方式——在函数(或者代码块)执行时自动产生,在调用结束的时候消亡;通常存储在栈中;代码块执行时依次入栈,执行结束时依次出栈;

静态存储

在函数外部定义或者使用关键字static定义的变量被称为全局变量——在程序执行的整个期间存在(在代码块被重复调用的时候侯静态变量不会被重复初始化,而是保持上次调用之后的值不变,也就是说,每次调用结束的时候,静态变量的值仍然保持);程序执行结束后释放;

动态存储

使用关键字new开辟的内存属于动态存储;这种内存由内存池(或者叫栈)提供,在程序执行(并非编译时)时动态开辟;——可以自主开辟和释放;所以不受程序或者函数的生命周期的影响;

内存泄漏

使用new在自由存储空间(或者堆)开辟的内存如果在使用完之后不去主动释放,导致的结果是:在程序执行完毕之后,指向这块内存的指针会失效(开辟的空间是使用指针进行管理的,而指针则是一般的自动存储的变量),但是指针原来指向的内存不会自己释放;所以在之后的程序的执行过程中这块内存将永远无法释放,而由于不断地开辟新的内存,导致程序的内存被耗尽而崩溃,

而这种泄露的结果将是非常严重的;

所以呢,在使用C++或者C写程序的时候,在自己开辟了动态内存空间之后一定要使用free或者delete释放;

猜你喜欢

转载自blog.csdn.net/qq_42468130/article/details/84037642
今日推荐