您的位置:首页 > 编程语言 > C语言/C++

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

2017-12-25 11:37 225 查看
new和delete运算符一次分配/释放一个对象,但某些应用需要一次为很多对象分配内存功能。

c++语言和标准库提供了两种一次分配一个对象数组的方法。

c++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组

标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。

new和数组

int *pia = new int[1024];//分配1024个int,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
;

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


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

释放动态数组

delete p;//p必须指向一个动态分配的对象或者为空
delete [] p;//p必须指向一个动态不配的数组或者空
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 数组 动态内存