首页 > 系统相关 >C++ 内存分区模型

C++ 内存分区模型

时间:2022-11-15 23:25:10浏览次数:40  
标签:释放 分区 C++ 程序员 编译器 存放 内存 代码

  • 代码区: 存放函数的二进制代码,由操作系统管理
  • 全局区: 存放全局变量、静态变量以及常量。
  • 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
  • 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

 

代码区:

  存放CPU执行的机器指令

  代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可

  代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令。

全局区:

  全局变量和静态变量存放在此

  全局区还包含了常量、字符串常量和其它常量

  该区域的数据在程序结束后由操作系统释放

栈区:

  由编译器自动分配释放,存放函数的参数值,局部变量等

  注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

堆区:

  由程序员分配释放,若程序员不释放,程序结束由操作系统回收

  在C++中主要利用new在堆区开辟内存

标签:释放,分区,C++,程序员,编译器,存放,内存,代码
From: https://www.cnblogs.com/itniwota/p/16894421.html

相关文章

  • c++匿名表达式
    C++11Lambda表达式 C++11中的匿名函数(lambda函数,lambda表达式)https://gitlab.com/yzzy/modern-cpp/-/blob/main/c16_lambda/main.cpp[](intx,inty){return......
  • windows--cmake与c++的使用教程(5)
    1概述本文基于前文环境本节目标:关于cmake脚本错误处理及cmake脚本执行流程2错误提示当脚本语法出错时,cmake会输出错误位于哪个文件、第几行、以及错误原因。......
  • Java 内存模型及若干相关问题
    java的内存模型的理解java的内存模型是一种抽象,对java语言在不同硬件平台上运行的差异的一种抽象描述,目的是屏蔽不同硬件平台之间的差异。JMM定义了线程和主存之间的访......
  • 【ES】ES内存占用高,扩内存,重启服务注意事项
    一、参考资料​​Elasticsearch内存占用分析与管理|Tink'sBlog​​​​ElasticsearchJVM堆内存使用率飙升,怎么办?-腾讯云开发者社区-腾讯云​​​​ES集群重启注意事......
  • C++设备管理系统
    C++设备管理系统53.设备管理系统功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号、设备名称......
  • 如何写成高性能的代码(三):巧用稀疏矩阵节省内存占用
    稀疏矩阵的概念一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列。矩阵里的元素可以是数字、符号及其他的类型的元素。一般来说,在矩阵中,若数值为0的元素数目远远多于非0元......
  • C++20高级编程 第五版 电子书 pdf
    作者:[比]马克·格雷戈勒(MarcGregoire)出版社:清华大学出版社原作名:ProfessionalC++,FifthEdition 链接:C++20高级编程第五版  拥抱C++的深度和复杂性,挖掘......
  • Visual Studio C++ 默认 UTF-8 编码及 *.editorconfig 统一代码格式
    ​转载请注明原文链接:https://www.cnblogs.com/mechanicoder/p/16894144.html1.问题由来背景:团队使用VisualStudio进行跨平台项目开发。遇到的问题:编码:Windows......
  • 内存分析及数组的3种初始化
    内存分析Java内存分析:数组的3种初始化静态初始化int[]a={1,2,3};Man[]mans={newMan(1,1),newMan(2,2)};动态初始化int[]a=newint[2];a[0]......
  • C++动态链接MySQL库
    C++链接MySQL库库安装目录CMakeListcmake_minimum_required(VERSION3.22)project(MySQLConnectionPool)include_directories(/usr/include/mysql) #安装库路径s......