动态内存管理

在C语言中我们用malloc,calloc,realloc,free来管理堆上的内存,那么c++是怎样的呢?

c++用new和delete两个关键字去取代了上诉函数。

这是一个简单的例子。

void Test()
{
// 动态申请一个int类型的空间
int* ptr4 = new int;

// 动态申请一个int类型的空间并初始化为10
int* ptr5 = new int(10);

// 动态申请10个int类型的空间
int* ptr6 = new int[3];

delete ptr4;

delete ptr5;

//申请多个是注意使用delete[]
delete[] ptr6;
}

从中我们可以看到比C语言更加简洁,因为省掉了强制类型转换和需要传参传字节数的麻烦。

new对于内置类型只开空间相当于malloc,里面存的是随机值,但对于自定义类型就不一样了,他们去掉用构造函数去进行初始化操作。

delete也是一样的,对于内置类型相当于free,但是对于内置类型他会先调用析构函数,然后才释放空间。

class A
{
public:
	A(int a1 = 0, int a2 = 0)
		:_a1(a1)
		,_a2(a2)
	{
		cout << "A(int a1 = 0, int a2 = 0)" << endl;
	}

	A(const A& aa)
		:_a1(aa._a1)
	{
		cout << "A(const A& aa)" << endl;
	}


	~A()
	{
		//delete _ptr;
		cout << "~A()" << endl;
	}

	void Print()
	{
		cout << "A::Print->" << _a1 << endl;
	}
private:
	int _a1 = 1;
	int _a2 = 1;
};

int main()
{
//调用默认构造
	A* p1 = new A;
//调用构造
	A* p2 = new A(2,2);
	
//用匿名对象去调用拷贝构造进行初始化
	A* p4 = new A[3]{ A(1,1), A(2,2), A(3,3)};

//先析构在释放空间
    delete p1;
    delete p2;
    delete[] p3;

	return 0;
}

相关推荐

  1. C++动态内存管理

    2024-07-23 06:04:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 06:04:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 06:04:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 06:04:02       45 阅读
  4. Python语言-面向对象

    2024-07-23 06:04:02       55 阅读

热门阅读

  1. linux协议栈之FDB表

    2024-07-23 06:04:02       14 阅读
  2. 记录贴-VUE相关

    2024-07-23 06:04:02       17 阅读
  3. ios CCUIImage.m

    2024-07-23 06:04:02       16 阅读
  4. unity和安卓的so文件联合使用

    2024-07-23 06:04:02       16 阅读
  5. 智能马桶的工作原理

    2024-07-23 06:04:02       15 阅读
  6. gitlab查询分支API显示不全,只有20个问题

    2024-07-23 06:04:02       14 阅读
  7. Linux Vim教程(四):文本编辑与修改技巧

    2024-07-23 06:04:02       14 阅读
  8. Esxi 上的 CentOS 7.6 系统中搭建本地 Yum 源

    2024-07-23 06:04:02       16 阅读
  9. Android 多用户问题

    2024-07-23 06:04:02       18 阅读
  10. QT 4.8版本的Ubuntu2004编译错误的解决方案

    2024-07-23 06:04:02       15 阅读
  11. 算法1--双指针

    2024-07-23 06:04:02       14 阅读
  12. C++实现排序算法

    2024-07-23 06:04:02       15 阅读