c++中NEW运算符的用法
c++中NEW运算符使用的一般格式为new 类型[初值]。用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
1、newint:开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)。
2、newint(100):开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址。
3、newchar[10]:开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址。
5、newint[5][4]:开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址。
6、float*p=newfloat(3.14159):开辟一个存放单精度数的空间,并指定该实数的初值为3.14159,将返回的该空间的地址赋给指针变量p。
扩展资料:
通过NEW运算符生成对象时,缓冲区会提前分配,可以使用堆的空间,也可以使用栈的空间。一旦这个对象使用完毕,就必须显式的调用类的析构函数进行销毁对象。但此时内存空间不会被释放,以便其他的对象的构造。
因此,如果缓冲区在堆中,那么调用delete[] buf;进行内存的释放;如果在栈中,那么在其作用域内有效,跳出作用域,内存自动释放。
new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
new char[10];//开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
new int[5][4];//开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址
float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p
new运算符使用的一般格式为 new 类型 [初值] 用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。
delete运算符使用的一般格式为 delete [ ] 指针变量
例如要撤销上面用new开辟的存放单精度数的空间(上面第5个例子),应该用 delete p;
前面用“new char[10];”开辟的字符数组空间,如果把new返回的指针赋给了指针变量pt,则应该用以下形式的delete运算符撤销该空间:
delete [] pt;//在指针变量前面加一对方括号,表示是对数组空间的操作
例 开辟空间以存放一个结构体变量。
#include <iostream>
#include <string>
using namespace std;
struct Student //声明结构体类型Student
{
string name;
int num;
char sex;
};
int main( )
{
Student *p; //定义指向结构体类型Student的数据的指针变量
p=new Student; //用new运算符开辟一个存放Student型数据的空间
p->name=″Wang Fun″; //向结构体变量的成员赋值
p->num=10123;
p->sex='m';
cout<<p->name<<endl<<p->num<<endl<<p->sex<<endl;//输出各成员的值
delete p;//撤销该空间
return 0;
}
运行结果为 Wang Fun 10123 m