#include "iostream"
using namespace std;
//1 new/delete(操作符)作用手工分配内存(heap上) malloc/free(函数)
//2 new/delete int 基础类型
//3 new/delete 数组
//4 new/delete类
//指针做函数参数
class Test1
{
public:
Test1(int a, int b)
{
m_a = a;
m_b = b;
cout<<"构造执行"<<endl;
}
~Test1()
{
cout<<"析构执行"<<endl;
}
protected:
private:
int m_a;
int m_b;
};
//c++中的new能自动的调用类的构造函数,delete能调用类的析构函数
//malloc不会调用类的构造函数 free也不会调用类的析构函数
// new/delete类
void example()
{
Test1 *p2 = (Test1 *)malloc(sizeof(Test1));
free(p2);
Test1 *p1 = new Test1(3, 4);
delete p1;
}
//二级指针修改实参
int CreateTest1(Test1 **p)
{
Test1 *tmp = new Test1(5, 6);
*p = tmp;
return 0;
}
//引用方式修改实参
int CreateTest2(Test1 * &myp)
{
myp = new Test1(5, 6);
return 0;
}
int main()
{
Test1 *p3 = NULL;
Test1 *p4 = NULL;
CreateTest1(&p3);
delete p3;
CreateTest2(p4);
delete p4;
system("pause");
return 0;
}
备份地址: 【New/Delete和Malloc/Free的对比】