c++动态数组(一)之new和delete
2017-12-25 11:37
225 查看
new和delete运算符一次分配/释放一个对象,但某些应用需要一次为很多对象分配内存功能。
c++语言和标准库提供了两种一次分配一个对象数组的方法。
c++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组
标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。
分配一个数组会得到一个元素类型的指针。由于分配的内存并不是一个数组类型,因此不能对动态数组调用begin或者end。这些函数使用数组维度来返回指向首元素和尾后元素的指针。
当n为0的时候也是合法的。但是为0的时候p不能解引用。这时,new返回一个合法的非空指针。对于0长度的数组来说,此指针就像尾后指针一样。
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必须指向一个动态不配的数组或者空
相关文章推荐
- new/delete 和malloc/free 的区别一般汇总
- 使用new,delete实现内存分配联系
- c/c++笔试题——C++中 new/delete 概念和用法总结
- 细说C++中的new与delete
- Effective C++ 学记之16 成对使用new和delete时要采取相同形式
- new与delete
- new/delete 和malloc/free 的区别
- 指针的基本操作 (new-delete)输出最值
- c++中new和delete的使用方法
- 细说C++中的new与delete
- Effective C++ .15,16获取原始资源和成对使用同类型new和delete
- new和delete
- C++ 二维数组 New 和 delete
- C++语言基础(2)-new和delete操作符
- 二维数组的动态分配(new)、初始化(memset)和撤销(delete)
- Effective C++ -----条款16:成对使用new和delete时要采取相同形式
- new和delete
- Effective C++ 第二版 5)new和delete形式 6) 析构函数里的delete
- GCC4.8对new和delete的参数匹配新要求
- 定制new和delete