首页 > 代码库 > new 和 delete
new 和 delete
new 和 delete能够动态的创建数组,删除数组。
char *a = new char;
delete a;
char *a = new char[12] //创建一个12个字节的字符数组
delete [] a;
int *a = new int[12]; //创建一个12个字节整形数组
delete [] a;
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int *a = new int[10]; for (int i = 0; i < 10; i ++) { a[i] = i; } for (int i = 0; i < 10; i ++) { cout << a[i] << endl; } delete [] a; return 0; }
创建二维数组
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int **a = new int* [10]; //注意前面的指针是比后面高一级的指针 for (int i = 1; i <= 10; i ++) { //二维指针的创建是一维一维进行的。 a[i-1] = new int[i]; } for (int i = 1; i <= 10; i ++) { for (int j = 0; j < i; j ++) { a[i-1][j] = i; } } for (int i = 1; i <= 10; i ++) { for (int j = 0; j < i; j ++) { cout << a[i-1][j]<<" "; } cout << endl; } for (int i = 1; i <= 10; i ++) { //二维指针的删除是先删除一维指针,在删除二维指针。 delete [] a[i-1]; } delete [] a; return 0; }
注意:
在构造函数中使用new来初始化对象的指针,则应在析构函数中使用delete。
new和delete必须相互兼容。new对应delete,new [] 对应 delete []。
如果有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带。因为只有一个析构函数,因此所有的构造函数都必须与它兼容。不过,可以在一个构造函数中使用new来初始化指针,而在另一个构造函数中将指针初始化为空,这是因为delete可以用于空指针。
new 和 delete
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。