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

