C++动态内存分配

来源:互联网 发布:win10 软件消失了 编辑:程序博客网 时间:2024/05/18 15:52

C++中将堆称为空闲存储器。
为了实现动态的内存分配,会用到最重要的两个操作符:new 和 delete

例1:为了给一个int类型的变量分配内存,先声明一个int类型的指针然后再使用new操作符给这个变量分配与类型相符合的内存。变量使用完成后要销毁变量,使用delete操作符。

int* Var{nullptr};Var = new int;/*对变量的操作,省略*/delete Var;/*释放Var的内存*/Var = nullptr;/*删除后置NULL*/

上面的操作还存在其它的语法:

int* Var{new int};/*操作,省略*/delete Var;Var = nullptr;

例2:给一个char类型的数组动态分配32个字节大小的内存。

char* Str{nullptr};Str = new char[32];/*对数组的操作,省略*/delete [] Str;/*释放Str的内存*/Str = nullptr;/*删除后置NULL*/

类似的语法:

char* Str{new char[32]};/*操作,省略*/delete Str;Str = nullptr;

例3:多维动态数组分配

char Strs{new char[8][16]};double Dflt{new double[32][64]};auto Atallc = new int[4][8][16];/*等等,还有很多写法*//*多维数组的删除与一维的删除方式一样,同样使用delete [] name;*/

C++语言的语法是很灵活的。同样完成上面的操作还有许多写法,但是为了有养成良好的习惯,还是应该分步骤进行。


规律总结:分配内存的时候new操作符后面接要分配内存的变量类型,应该与指针的类型相匹配。当给数组分配内存的时候直接在此处的变量类型后面加方括号,里面写上分配的数目即可。注意多维数组仅限于用变量指定最左边那一维,例如:new int[var][4][4];


注意事项:程序结束时系统将释放空闲存储器中分配的内存,但一定要养成使用完内存后释放的习惯。否则容易造成内存泄漏,并且释放后需要将变量指针置为NULL.

0 0
原创粉丝点击