浅谈new和delete

new表达式的目的在于运行阶段为一对象分配未命名内存,并使用指针以访问这个值,因此new表达式返回的是指针,其通用格式如下:
                     typeName *pointer_name= new typeName;                
与普通的变量地址赋给指针如:

int higgens;
int *pt=&higgens;
相比,new出来的指针所指向的内存空间是没有命名的,因此只能通过指针进行访问,而第二种情况能通过higgens和*pt访问。

new的一个重要功能是在动态数组中的应用:

首先创建一个动态数组如:  

int *p=new int [10]

以创建一个包含10个int元素的数组,指针指向的是该数组的第一个元素;要使用该动态数组的其它元素,只需了解到C和C++都是用指针来处理数组,即可知道:*p初始时指向的是数组的第一个元素,对此可以使用p[0]访问;而第二个元素则可使用p[1],等等。下面给个例子:

#include<iostream>
using namespace std;
int main()
{
    int *p= new int[3];
    p[0]=0;
    p[1]=1;
    p[2]=2;
    cout<<"p[0] is "<<p[0]<<endl;


    p=p+1;
    cout<<"Now p[0] is "<<p[0]<<endl;
    return 0;
}



结果如下:



使用new动态创建数组或对象的同时,可以用delete来释放内存。delete释放内存有两种基本情况:

delete  p;  //p指向普通对象
delete [] p;  //p指向数组
对于delete的使用应注意:delete只能用来释放new的内存;不能delete同意内存两次;虽然对空指针应用delete是安全合法的但没意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值