C++ 動態記憶體分配

鋸齒流沙發表於2017-12-27

在C語言中使用malloc關鍵字,實現動態記憶體分配,使用free來釋放記憶體。雖然C++可以和C語言混編,但是C++有自己的動態記憶體分配實現方式。

C++中使用new關鍵字來實現動態記憶體分配,使用delete關鍵字釋放記憶體。

class Student
{
public:
	void mprintf(){
		cout << "name:" << name << "--------" << "age:" << age << endl;
	}
	//覆蓋該類的預設建構函式
	Student(char*name, int age){
		this->name = name;
		this->age = age;
		cout << "建構函式" << endl;
	}
	//解構函式
	~Student(){
		cout << "解構函式" << endl;
	}
	void setName(char* name){
		this->name = name;
	}
	char* getName(){
		return this->name;
	}

private:
	char* name;
	int age;

};

void func(){
	Student* s = new Student("xiaoMing", 15);
	s->mprintf();
	cout<<s->getName()<<endl;
	delete s;
}

void main(){
	
	func();
	
	getchar();
}
複製程式碼

C++.png

以上在func方法中使用new關鍵字為Student指標分配記憶體,使用delete s釋放分配的記憶體,可以看到會呼叫構造和解構函式。

陣列型別分配記憶體

void main(){
	//分配記憶體
	int *p = new int[10];
	p[0] = 20;
	cout << p[0] << endl;
	//釋放記憶體
	delete[] p;
	
	getchar();
}
複製程式碼

C++.png

以上就是為陣列分配動態記憶體,通用是使用newdelete完成分配和釋放,需要注意這兩個關鍵字要配套使用,而釋放記憶體時需要delete[] p使用這一方式實現。

相關文章