new和delete
代码:
#include <iostream>
using namespace std;
void main()
{
//基础数据类型分配内存
int *p = new int;
*p = 1;
cout<<"*p:" <<*p<<endl;
delete p;
//给一维数组分配内存
int *pb;
pb = new int[5];
for (int i=1 ; i<5 ; i++)
{
*(pb+i) = i;
}
cout<<"*(pb+2)="<<*(pb+2)<<endl;
//给二维数组分配内存
int (*pc)[3];
int j;
pc = new int[2][3];
for (int i=0;i<2;i++)
{
for (j=0 ; j<3 ; j++)
{
*(pc[i]+j) = 1;
}
}
cout<<"*(pc[1]+1)=" << *(pc[1]+1) <<endl;
system("pause");
}
结果:
在类中的new和delete
代码:
#include <iostream>
using namespace std;
class Test
{
public:
Test(int _a)
{
a = _a;
cout<<"构造函数执行" <<endl;
}
~Test()
{
cout<<"析构函数执行" <<endl;
}
protected:
private:
int a;
};
void main()
{
Test *pT1 = (Test *)malloc(sizeof(Test));
delete pT1;
Test *pT2 = new Test(10);
free(pT2);
system("pause");
}
结果:
注:C++代码中也可以用C语言的malloc和free,不同的是malloc和free不调用构造函数和析构函数,new和delete调用构造函数和析构函数。
如果new和malloc给基础数据类型分配内存,则可以混搭。