- 博客(7)
- 资源 (6)
- 收藏
- 关注
原创 c++动态数组(二)之allocator类
new在灵活性上面一些局限性,以方便它将内存分配和对象构造组合在了一起,delete将内存释放和对象析构组合在一起。当分配一大块内存时,我们通常计划在这块内存上面按需构造对象。allocator类它帮助我们将内存分配和对象构造分离开来。
2017-12-25 16:54:46 332
原创 c++动态数组(一)之new和delete
new和delete运算符一次分配/释放一个对象,但某些应用需要一次为很多对象分配内存功能。 c++语言和标准库提供了两种一次分配一个对象数组的方法。 c++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组 标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。new和数组 int *pia = new int[1024];//分配1024个int,pia
2017-12-25 11:37:36 2774
原创 c++智能指针(五)之weak_ptr
weak_ptrweak_ptr是一种不控制所指向对象的生存期的智能指针,它指向由一个shared_ptr所管理的对象。将一个weak_ptr绑定到shared_ptr上面不会改变shared_ptr的引用计数。 一旦最后一个指向对象的shared_ptr被销毁,对象就会被释放。创建auto p = make_shared<int>(42);weak_ptr<int>q(p);//q弱共享p,
2017-12-24 22:27:06 888
原创 c++智能指针(四)之unique_ptr
unique_ptr和shared_ptr不同,某个时刻只能有一个unique_ptr指向一个给定的对象。初始化没有类似make_shared的标准库函数返回一个unique_ptr,需要将其绑定到一个new返回的指针上。 unique_ptr<int> u(new int(1024)); 由于unique_ptr拥有它所指向的对象,所以他不支持普通的拷贝和赋值操作。unique_ptr
2017-12-24 21:38:05 363
原创 c++智能指针(三)之shared_ptr和new结合使用
shared_ptr和new结合使用我们除了使用make_shared来初始化一个智能指针,还可以使用new返回的指针来初始化智能指针。shared_ptr<int> p1(new int(42));//p1指向一个值为42的intshared_ptr<int> p2 = new int(1024);//错误,不能将一个内置指针隐式转化为智能指针。我们不能将一个内置指针隐式转化为智能指针。
2017-12-24 19:54:06 14075
原创 c++之智能指针(二)之直接管理内存
直接管理内存c++定义了两个运算符来分配和释放动态内存。new分配内存,delete释放new分配的内存。 相对于智能指针,使用这个两个运算符非常容易出错。因为它不能依赖类对象拷贝、赋值和销毁操作的任何默认定义。使用new动态分配和初始化对象默认情况下,动态分配的对象是默认初始化的。这意味着内置类型或组合类型的值将是未定义的。而类类型的对象将用默认的构造函数进行初始化。string *ps = n
2017-12-23 16:16:44 273
原创 c++之智能指针(一)之动态内存与智能指针
动态内存与智能指针在c++中,动态内存的管理是通过一对运算符来完成的:new: 在动态内存中为对象分配空间并返回一个指向该对象的指针。delete: 接受一个动态对象的指针并销毁该对象,并释放与之关联的内存。例子 //新建一个动态数组,元素个数为960*520,array是一个指针,指向数组的第一个int int *array = new int[960*520]; delete
2017-12-23 15:07:46 341
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人