new和delete的基本语法

new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
new int(100);  //开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
new char[10];  //开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址
new int[5][4];  //开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址
float *p=new float (3.14159);  //开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p


注意: newdelete是运算符,不是函数,因此执行效率高。




#include<iostream>
using namespace std;


//1 new和delete操作符 c++语法(malloc free)
//2 基础类型变量  分配数组变量 分配类对象


/************************************************************************/
/* new分配基础类型                                                      */
/************************************************************************/

int main01()
{
	
	//C语言的语法
	int *p = (int *)malloc(sizeof(int));
	*p = 10;
	free(p);

	//c++语言的语法
	int *p2 = new int;
	*p2 = 20;
	free(p2);

	//分配内存的时候初始化
	int *p3 = new int(30);
	printf("p3:%d\n",*p3);
	delete p3;

	system("pause");
	return 0;
}
/************************************************************************/
/* //分配数据变量                                                       */
/************************************************************************/
int main02()
{
	//c语言分配数据
	int *p = (int *)malloc(sizeof(int) * 10);//int arry[10]
	p[0] = 1;
	free (p);

	//c++语言分配数据

	int *pArry = new int[10];
	pArry[1] = 2;
	delete [] pArry;//释放数组内存的时候不要忘记  "[]" 


	system("pause");
	return 0;
}
/************************************************************************/
/*动态分配一个对象                                                      */
/************************************************************************/
class Test
{
public:
	Test(int _a)
	{
		a = _a;
		cout<<"构造函数"<<endl;
	}
	~Test()
	{
		cout<<"析构函数"<<endl;
	}
protected:
private:
	int a;
};
//分配对象new delete 
//相同 和 不同的地方 new能自动的执行类型的构造函数  delete操作符能执行类的析构函数
int main()
{
	
	//c语言的语法
	Test *pT1 = (Test *)malloc(sizeof(Test));
	free(pT1);


	//c++的语法
	Test *pT2 = new Test(10);
	delete pT2;

	system("pause");
	return 0;
}


发布了33 篇原创文章 · 获赞 2 · 访问量 8534

猜你喜欢

转载自blog.csdn.net/QQ960054653/article/details/55657298