new 和 delete 运算符

为了提高程序的通用性和内存的利用率,实际编程时,经常出现在程序运行过程中,根据程序对内存的实际需求来分配存储空间的情况


如下列程序:

int n;

cin>>n;

float a[n];

但是编译器在编译第三行时出错,原因是定义数组时下标表达式的值必须是:编译时有明确的值的常量

不过c++允许用new运算符申请动态内存的方法的解决上述程序

如:float  * a = new float[n];

在c++中,new和delete运算符分别用于为指针变量    申请分配动态内存空间   和   收回指针所指向的内存空间


new运算符为指针变量动态分配内存空间的常用格式:

1   type * p = new type

功能:申请分配由类型 type 确定大小的一片连续的内存空间,并把所分配的内存空间的指针赋给p,当申请不成功时,p = 0;

2  type * p = new type (value)

功能:第二种格式除了完成第一种格式的功能外,还将value的值作为p所指的内存空间,对于这种格式,type不一定局限于基本数据类型

3 type * p = new type[value]

 功能:分配指定类型的一维数组空间


delete运算符用来将动态分配的内存空间还给系统,常用格式为

1  delete p;

2   delete []p;

3 delete [size]p;



发布了57 篇原创文章 · 获赞 10 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章