c++动态数组(一)之new和delete

new和delete运算符一次分配/释放一个对象,但某些应用需要一次为很多对象分配内存功能。
c++语言和标准库提供了两种一次分配一个对象数组的方法。
c++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组
标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。

new和数组

    int *pia = new int[1024];//分配1024int,pia指向第一个int

分配一个数组会得到一个元素类型的指针。由于分配的内存并不是一个数组类型,因此不能对动态数组调用begin或者end。这些函数使用数组维度来返回指向首元素和尾后元素的指针。

初始化

int *pia = new int[1024];//10个未初始化的int
int *pia2 = new int[1024]();//10个值初始化为0的int

string *psa = new string[10];//10个空string
string *psa2 = new string[10]();//10个空string

动态分配一个空数组是合法的

size_t n = get_size();
int *p = new int[n];

for(int *q = p;q!=p+n;++q){
//处理数组
}

当n为0的时候也是合法的。但是为0的时候p不能解引用。这时,new返回一个合法的非空指针。对于0长度的数组来说,此指针就像尾后指针一样。

释放动态数组

delete p;//p必须指向一个动态分配的对象或者为空
delete [] p;//p必须指向一个动态不配的数组或者空
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值