C++中new和delete的使用
New的使用:
可以动态分配数组或者是单个对象;int *p=new int;或者 int *p=new int[常量表达式]。
注意动态申请空间的时候不需要给出指定的名字的。New返回的是申请空间的首地址。
动态创建对象的初始化:按照变量直接初始化的规则去初始化申请的内存空间。
最好还是初始化:int *p=new int();
注意:值初始化的()是在类型名后面,而不是变量的后面。否者是定义一个函数
如:int x();
Delete的使用:
Delete不能释放不是new分配的内存。但是可以delete值为0的指针。C++中没有明确定义如何释放不是用new分配的指针。
Delete掉指针后的该指针称为悬垂指针。它指向曾经存放对象的内存当中,但该对象已经不存在。若使用该指针还是会读取出对应内存现有的值。所以最好delete后把指针置0.
Const对象的分配与回收:
动态创建const必须初始化.new返回的是const对象的地址,因此只能赋值给指向const对象的指针。注意:没有默认构造函数的类类型或者是内置类型必须显示初始化。
Const int *p=new cons tint(1024);
Const string *p=new const string;(默认构造函数)
删除const对象:delete p 即可。
浙公网安备 33010602011771号