C++ new 和 delete 的那些事
一个变量
int *p = new int;
delete p;
p = NULL;
一个变量的new与delete很好理解,在此不赘述。
一维数组
int *p = new int[];
delete []p;
p = NULL;
二维数组
int main()
{
int **p = new int*[10]; //new 出一个指针数组p,有十个指针元素
int i = 0;
int j = 0;
for (i = 0; i < 10; i++)
{
p[i] = new int[2]; //每个指针元素指向一个数组,数组带2个int元素
}
//赋值
int value = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 2; j++)
{
p[i][j] = value++;
}
}
//输出
for (i = 0; i < 10; i++)
{
for (j = 0; j < 2; j++)
{
cout << p[i][j] << " ";
}
cout << endl;
}
//释放内存
for (i = 0; i < 10; i++)
{
delete[] p[i];
p[i] = NULL;
}
delete[] p;
p = NULL;
getchar();
return 0;
}
简而言之,就是new出一个二维指针,包含N个一维指针,再new N遍,为这些一维指针分配空间,并赋值,delete的时候就是deltet N遍。释放掉空间并指针归NULL(记得释放二维指针)。