zoukankan      html  css  js  c++  java
  • <现代C++实战30讲>笔记 01 | 堆、栈、RAII:C++里该如何管理资源?

    1、堆(heap),动态分配的内存区域,分配之后需手工释放(new, delete, malloc, free)

        这种方式需要分配内存,释放内存,因此可能会造成内存泄露,或者内存碎片的问题。

    2、栈(stack),函数调用过程中,产生的本地变量和调用的数据区域

       分配、释放简单,只需要移动指针即可;后进先出,也不会出现内存碎片。因此对象的分配,也更适合放在栈上。

       但有些时候,对象不能或者不应该放在栈上,包括对象很大,对象的大小在编译时不能确定,对象是函数的返回值,但由于特殊的原因,不应使用对象的值返回。

    3、RAII,C++中特有的资源管理方式,通过使用栈和析构函数来实现。并且不限于清理内存,还包括关闭文件,释放同步锁,释放其他重要的系统资源

    4、栈展开

        在发生异常时,对析构函数进行调用

    5、怎么考虑在栈上分配还是在堆上分配

        凡生命周期超出当前函数的,一般需要用堆(或者使用对象移动传递)。反之,生命周期在当前函数内的,就该用栈

  • 相关阅读:
    python函数对象
    生成器表达式,列表推导式
    python转换excel成py文件
    Python处理excel表
    Go基础:接口相关
    JAVA03-输入和输出
    python6-while循环
    python5-字典
    自动化8-xpath
    网络学习day1-计算机网络基础
  • 原文地址:https://www.cnblogs.com/573177885qq/p/12042129.html
Copyright © 2011-2022 走看看