美文网首页
12动态内存

12动态内存

作者: 龟龟51 | 来源:发表于2017-10-26 11:00 被阅读0次

12动态内存

每个程序分配有静态内存和栈内存,还有一个内存池称为自由空间或堆。用来存储动态分配。

12.1动态内存与只能指针

内存泄露:旺角是否内存;引用非法内存的指针:尚有指针引用内存却释放了。

智能指针:shared_ptr允许多个指针指向同一个对象,unique_ptr独占所指对象,weak_ptr弱引用指向shared_ptr。头文件memory。

12.1.1shard_ptr类

Make_shared函数

Shared_ptr有引用计数,拷贝或者利用其初始化或者传递给另一个函数或者作为函数返回值引用计数都会加1。给其赋新值,或是被销毁,或离开其作用域,计数器都会递减。计数器为0时,就会释放。还会释放相关联的内存。

12.1.2直接管理内存

Delete之后重置指针值

空悬指针,指针仍有但内存已经释放。

12.1.3shared_ptr和new结合使用

不能进行内置指针到智能指针间的隐式转换,必须使用直接初始化形式。

不要混合使用普通指针和智能指针,也不要使用get初始化另一个智能指针或为智能指针赋值。

14.1.4智能指针和异常

12.1.5unique_ptr

某个时刻智能有一个unique_ptr指向一个给定的对象(独占)。

12.1.6weak_ptr

核查指针类

是用weak_ptr去初始化类成员,不会影响weak_ptr指向对象的生成期。

12.2动态数组

12.2.1new和数组

分配一个数组会得到一个元素类型的指针

如果初始化器数目小于元素数目,剩余元素将进行值初始化。如果初始化器数目大于元素数目,则new表达式失败,不会分配内存。

动态分配一个空数组是合法的

按逆序销毁,从后向前

可以用下标访问。

12.2.2allocator类

allocator分配为构造的内存,要使用其返回的内存,必须用construct构造对象。使用未构造的内存,其行为是未定义的。

相关文章

  • 12动态内存

    12动态内存 每个程序分配有静态内存和栈内存,还有一个内存池称为自由空间或堆。用来存储动态分配。 12.1动态内存...

  • C++中New关键字和命名空间

    动态内存分配 C++中的动态内存分配C++中通过new关键字进行动态内存申请C++中的动态内存申请是基于类型进行的...

  • freertos的动态内存分配之heap_1.c解析

    一、freertos的动态内存分配原理 首先,freertos的动态内存分配是一种“假”动态内存分配策略。所谓“假...

  • C++primer_内存

    十二:动态内存 头文件 动态内存对象只有在被显示释放的时候,才会被销毁。动态内存的释放极其容器出错...

  • 12-动态内存

    12.1 智能指针 智能指针行为类似普通指针,但它负责自动释放所知的对象。 #include s...

  • 十、动态内存分配与命名空间

    1、C++中的动态内存分配 通过new关键字进行动态内存申请 C++中的动态内存申请时基于类型进行的 delete...

  • C++中的新成员

    C++中的动态内存分配 C++中通过new关键字进行动态内存申请 C++中的动态内存申请是基于类型进行的 dele...

  • malloc

    动态内存分配mooc

  • 动态内存分配小记

    1.首先,什么是动态内存分配 所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执...

  • 第12章 动态内存

    静态内存:保存局部static对象,类static数据成员以及定义在任何函数之外的变量。 栈内存:用来保存定义在函...

网友评论

      本文标题:12动态内存

      本文链接:https://www.haomeiwen.com/subject/rgihpxtx.html