小工具知识网

当前位置: 首页 > 行业知识 > C++的内存管理和模板

行业知识

C++的内存管理和模板

2026-11-07 06:24:09 来源:互联网转载

文章目录

  • 一、内存管理
    • 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++中的动态内存开辟是什么样的吧。

            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类型的空间并初始化为10int* 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 

上一篇:宝塔面板崩溃应急手册,快速解决故障,保障网站稳定运行!

下一篇:怎么获取服务器的响应?