C++ 动态内存分配

301 阅读1分钟

在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使用这一方式实现。