大家好,今天来介绍new和delete的使用方法。
一.基本使用
当我们想要对一段未命名内存分配内容的时候,只能通过指针来访问该内存,我们可以用指针配合new运算符来开辟内存(malloc也可以实现)。我们需要告诉new我们要在内存里存储什么样的数据类型,使用模式如下:
typeName * Pointer_name = new typeName;
在使用new开启了内存空间存储了数据以后,我们在使用完毕后需要使用delete释放掉开辟的内存,方法很简单:
delete Pointer_name;
注意两点:
1.delete只能释放new开启的内存,不要用delete释放声明变量所开辟的内存。
2.delete用来作用于new开辟的地址而不是new对应的指针,例如:
int * Pt = new int;
int * Pg = Pt;
delete Pg;
此处,指针Pg指向new开辟的内存,所以释放掉Pg即可,不需要释放掉new对应的指针Pt。
二.动态数组
如果通过声明来定义数组,程序会在编译时对它分配内存,因此必须明确数组的大小。而如果我们通过使用new来创建动态数组,则是在程序运行的时候才对它分配内存,且可以在程序运行时选择数组的长度。格式如下:
typeName * Pointer_name = new typeName [num_element];
new运算符返回数组的第一个地址,被分配给指针。
释放动态数组内存的方法也很简单:
delete [] Pointer_name;
这个方括号告诉程序,应该释放整个数组的内存,而不是指针指向元素的内存。
希望对大家有帮助,下期见