(1)new运算符使用的一般格式:
new 类型 [初值];
用new分配空间时不指定初值。如果由于内存不足等原因而无法正常分配空间,那么new会返回一个空指针NULL,用户可以更具该指针的值判断分配空间是否成功。
例如:
new int;//开辟一个存放整形的存储空间,返回一个指向该存储空间的地址(指针)。
new int (100);//开辟一个存放整形的空间,并指定该整数的初值为100。
new *c=new char [10];//开辟一个存放字符数组的空间,返回首地址。
float *p=new float (1.14159);
//开辟一个存放单精度数的空间,并指定该实数值为3.14159,将返回该空间的地址赋给指针变量p
(2)用new动态建立一个对象:
new Worker;
编译系统开辟了一段内存空间,并在此内存空间存放了一个Worker类对象。但此时用户还无法访问这个对象,因为这个对象既没有对象名,用户也不知道它的地址,这种对象称为无名对象。它确实存在,但没有名字。
用new运算符动态分配内存后,将返回一个指向新对象的指针值,即所分配的内存空间的起始地址。用户可以获得这个地址,并通过这个地址来访问这个对象。需要定义一个指向本类的对象的指针变量来存放该地址。
Worker *pt;//定义一个指向Worker类对象的指针pt
pt=new Worker;//在pt中存放新对象的起始地址
(3)C++还允许在执行new时,对新建对象进行初始化。例如:
Student *pt=new Student (1,"zhangsan',4000);
在执行new运算符时,如果内存量不足,无法开辟所需的内存空间,目前大多数C++编译系统都会使用new返回一个0指针。只要检测返回值是否为0,就可以判断分配内存是否成功。
(二)delete运算符 delete运算符的一般形式delete [ ] 指针变量;
例如要撤销上面用new开辟的存放单精度数的空间,方法如下:
delete p;
要撤销上面用new开辟的存放字符数组的空间,方法如下:
delete [ ] c;
要撤销上面用new开辟的对象空间,方法如下:
delete pt;
new与delete动态分配和释放内存j举例
#includeusing namespace std; //1.new的基本用法 int *func() { //在堆区创建建整形数据 //new 返回的是 该数据类型的指针 int *p=new int (10); return p; } void test01() { int *p=func(); cout<<*p<



