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;
}


發佈了39 篇原創文章 · 獲贊 2 · 訪問量 8720
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章