• C++


    占用内存

    一个C/C++编译的程序占用内存分为以下五个部分:

    1. 栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。

    2. 堆区(heap):一般由程序员自动分配,如果程序员没有释放,程序结束时可能有OS回收。其分配类似于链表。

    3. 全局区(静态区static):存放全局变量、静态数据、常量。程序结束后由系统释放。全局区分为已初始化全局区(data)和未初始化全局区(bss)。

    4. 常量区(文字常量区):存放常量字符串,程序结束后由系统释放。

    5. 代码区:存放函数体(类成员函数和全局区)的二进制代码。

    三种内存分配方式

    1. 从静态存储区分配:内存在程序编译的时候已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

    2. 在栈上创建:在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数执行结束时,这些内存单元会自动被释放。 栈内存分配运算内置于处理器的指令集,效率高,但是分配的内存容量有限。

    3. 从堆上分配:亦称为动态内存分配。 程序在运行的时候使用malloc或者new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。 动态内存的生命周期有程序员决定,使用非常灵活,但

      如果在堆上分配了空间,既有责任回收它,否则运行的程序会出现内存泄漏,频繁的分配和释放不同大小的堆空间将会产生内存碎片。

    参考博客

    1. https://blog.csdn.net/cherrydreamsover/article/details/81627855

    2. https://www.zhihu.com/question/320804493

    3. https://www.pianshen.com/article/97451267985/

    4. https://blog.csdn.net/qingkongyeyue/article/details/53895553?locationNum=10&fps=1

  • 相关阅读:
    HttpClient
    充值保存
    button 样式
    创建窗口
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13811558.html
Copyright © 2020-2023  润新知