C++的内存管理和模板

2024-02-27 1632阅读

温馨提示:这篇文章已超过438天没有更新,请注意相关的内容是否还可用!

文章目录

  • 一、内存管理
    • 1.内存的分布
    • 2.C++中的动态内存管理
    • 3.重载new和重载delete
    • 4.new和delete的实现原理
    • 5.定位new
    • 二、模板
      • 1.泛型编程
      • 2.函数模板
        • 1.定义模板
        • 2.实例化模板
        • 3.模板类型的参数
        • 4.非类型模板参数
        • 3.类模板
          • 1.定义模板
          • 2.实例化模板
          • 3.模板的成员函数
          • 总结

            一、内存管理

            1.内存的分布

            C++的内存管理和模板

            这是在C语言中的内存分布,C++的内存分布也是这样。下面让我们看看C++中的动态内存开辟是什么样的吧。

            2.C++中的动态内存管理

            C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。

            int main()
            {
            	int* ptr1 = new int;      //动态申请一个int类型的空间	
            	char* cptr = new char;    //动态申请一个char类型的空间	
            	int* ptr2 = new int(10);  //动态申请一个int类型的空间并初始化为10
            	int* ptr3 = new int[10];  //动态申请10个int类型的空间
            	delete ptr1;	//释放ptr1的空间
            	delete cptr;	//释放ptr1的空间
            	delete ptr2;	//释放ptr2的空间
            	delete[] ptr3;	//释放ptr3的空间
            	return 0;
            }
            

            注意:申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[]。

            操作案例:

            class A
            {
            public:
            	A(int a = 0) :a(a)
            	{
            		cout 
            		cout 
            	cout 
            	A* ptr1 = new A(10);//分配并初始化一个A对象
            	A* ptr2 = new A[10];//分配10个默认初始化的A对象
            	delete ptr1;//销毁 *ptr1,并释放ptr1指向的空间
            	delete[] ptr2;//销毁数组中的元素,然后释放相应的空间
            	return 0; 
            }
             barced initializer - list }
            	
            	//ptr现在指向的只不过是与A对象相同大小的一段空间,还不能算是一个对象,因为构造函数没有执行
            	A* ptr = (A*)malloc(sizeof(A));  
            	//注意:如果A类的构造函数有参数时,此处需要传参
            	new(ptr)A;	
            	ptr-~A();
            	free(ptr);
            	return 0;
            }
            
            	if (a 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]