C/C++程序的内存分配

2023-05-16

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

 

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 

3、全局区(静态区)(static)

  • 全局变量和静态变量的存储是放在一块的,
  • 初始化的 全局变量和静态变量在一块区域,
  • 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。
  • - 程序结束后由系统释放。 

4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 

5、程序代码区—存放函数体的二进制代码

 //main.cpp    
  int   a   =   0;   全局初始化区    
  char   *p1;   全局未初始化区    
  main()    
  {    
  int   b;   栈    
  char   s[]   =   "abc";   栈    
  char   *p2;   栈    
  char   *p3   =   "123456";   123456/0在常量区,p3在栈上。    
  static   int   c   =0;   全局(静态)初始化区    
  p1   =   (char   *)malloc(10);    
  p2   =   (char   *)malloc(20);    
  分配得来得10和20字节的区域就在堆区。    
  strcpy(p1,   "123456");   123456/0放在常量区,编译器可能会将它与p3所指向的"123456"  
  优化成一个地方。    
  } 

 

 

知乎转载连接:

 https://zhuanlan.zhihu.com/p/78478567

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++程序的内存分配 的相关文章

  • Java和c#的语法对比(详细)

    转载链接 https www cnblogs com wxl123 p 11445916 html https blog csdn net diaodui3845 article details 101243084 depth 1 utm
  • flstudio21水果language选项中文设置方法教程

    编曲是通过DAW xff08 数字音频工作站软件 xff09 完成的 xff0c 也就是我们常说的宿主软件 现在有很多优秀的宿主软件 xff0c 例如Cubase Studio One FL Studio等 FL Studio是一款功能强大
  • 提高下载微软产品的速度(改host)

    改Host方法 先找到host文件 xff1a C Windows System32 drivers etc 管理员权限打开记事本 xff0c 打开host文件 在这里搜索 download visualstudio microsoft c
  • web编程技术基础---CSS

    转载链接 https www baidu com link url 61 J4xBnCADPUYpDI132XvKo2F9k49iKoskRJARTEMwySMBC5PRGXM6kYVJ RATuOugtF8NijkOYA4sPYPWpY4
  • python语言基础知识笔记

    目录 一 程序书写tips 二 multi sources处理 三 关键字 四 输入输出流 print的格式化输出 五 数据类型 1 简单数据类型 2 复杂数据类型 1 List xff08 列表 xff09 2 元组 xff08 tupl
  • 程序设计语言中,说明性文字的 尖括号 和 中括号 分别指代什么含义

    1 lt gt lt gt 中的内容一般是说明性文字 例如 open lt 123 txt的目录 gt 就是说在这个位置上放123 txt的目录 记得把 lt gt 去掉 2 则表示内面的内容是可选内容 那当然也可以不选啦 一般是放参数表的
  • python多继承和super()函数详解

    转载链接 https blog csdn net qq 26442553 article details 81775449 depth 1 utm source 61 distribute wap relevant none task bl
  • python重构父类方法后如何使用父类方法,以及super()函数介绍

    转载链接 https www baidu com link url 61 82A3TlFbvz5DBA5VffrpVPyF2 pNNdEEACppjT06B vxo7OkHAXcMs pdanQJ2Tntt6mXICprpjHBNhtiJZ
  • 编程语言的通用大纲(用于总结知识点)

    一 程序书写tips 二 multi sources处理 三 关键字 四 输入流和输出流 五 数据类型 六 运算符 七 控制流 八 函数 九 面向对象基础 十 文件操作 十一 异常处理 十二 图形界面与可视化 十三 多线程机制 十四 数据库
  • Java语言基础知识总结

    目录 一 程序书写tips 二 multi sources处理 三 关键字 四 输入流和输出流 1 输入语句 2 输出语句 五 数据类型 1 简单数据类型 2 容器数据类型 引用类型 1 字符串 2 一维数组 2 二维数组 3 枚举 4 对
  • Java修饰符的知识

    目录 Java修饰符 一 访问修饰符 1 访问变量的方式 2 四种访问修饰符的区别 1 public修饰符 2 protected修饰符 3 default修饰符 4 private修饰符 二 非访问修饰符 1 static 修饰符 静态变
  • Java的关键字及其解释(很全)

    类别关键字说明访问控制private私有的protected受保护的public公共的default默认类 方法和变量修饰符abstract声明抽象class类extends扩充 继承final最终值 不可改变的implements实现 x
  • FL Studio21最新中文版下载及切换语言教程

    随着近年来摇滚 电音的发展 xff0c 越来越多的人开始对电子音乐编曲感兴趣 xff0c 而电音编曲的首要条件 xff0c 就是需要一个好的DAW xff08 数字音频工作站 xff09 xff0c 常用的DAW有很多 xff0c 例如Cu
  • python的关键字详解

    coding utf 8 因为我的输出中有中文 1 and xff1a 表示逻辑 与 2 del xff1a 用于list列表操作 xff0c 删除一个或者连续几个元素 3 from xff1a 导入相应的模块 xff0c 用import或
  • c++ java c# go python js node.js R这些语言之间的不同风格

    目录 第一部分 静态语言 零 C语言 一 c 43 43 二 Java 三 C 四 go 第二部分 脚本语言 五 python 六 R 七 js 八 node js 九 PHP 十 asp net core 第一部分 静态语言 零 C语言
  • deepin-15.11版本 深度系统如何关闭桌面界面 (重启后生效)

    deepin 15 11版本 关掉桌面需要执行 sudo systemctl disable lightdm 开启桌面需要执行 sudo service lightdm start 命令执行后 如果不报错 重启就会生效 额外说一句 deep
  • manjaro的简单命令

    系统命令 输出系统基本信息 sudo screenfetch强制关机 sudo shutdown now升级系统 sudo pacman Syyu清理系统中无用的包 sudo pacman R pacman Qdtq 清除已下载的安装包 s
  • manjaro的安装与配置

    关于manjaro一些配置的文章推荐 manjaro详细安装过程请看这里 https blog csdn net luo3300612 article details 83281029 I3窗口管理器的配置请看这里 https www cn
  • 谷歌浏览器如何打开标签时不覆盖原标签

    1 中键 鼠标滑轮 点击链接 2 Ctrl 43 左键单击 3 鼠标指针移至标签右击 xff0c 选择在新标签页中打开 转载地址 https www baidu com link url 61 UJZqjGzit7S3FRoiTmbLeJq
  • Vbox安装manjaro 增强功能 无法加载 无法全屏 分辨率 (已解决)

    linux操作系统具有天生的优势 今天被推荐看中了manjaro发行版 于是乎在Vbox里安装试了一下 中间填了的坑在下 1 Vbox窗口太小 操作系统无法全屏 这个问题百度了下 主要是安装增强功能 win版Vbox的安装目录里有一个叫做V

随机推荐

  • vmware安装deepin系统一直卡在黑屏(已解决)

    我与到了这样的情况 在vmware里安装的deepin15 一致卡在黑屏界面 解决办法如下 deepin属于dedian系的系统 在vmware选择系统类型的时候 选择同属于debian系的ubantu就行了 还要注意待安装的系统是32还是
  • arch linux设置网络

    转载地址 https www baidu com link url 61 ItEG8p9JBhXBaRapfZwvJHqvLviMk7 xfiQRuPA5eqeE5l8y BOc48YHjeL1pvfyHxl8C5KyEgvMzZZvpJW
  • 第一次配置Arch经历的的步骤

    在安装基本操作系统之前 我们处于arch安装引导的环境里 而不是arch里 本篇采用efi 43 gpt启动 在安装之前先查看自己的电脑是否支持efi模式 怎么查看详情转这个链接 目录 在安装基本操作系统之前 我们处于arch安装引导的环境
  • FL Studio21中文版本下载及语言切换调整

    FL Studio21是一个很好的音乐制作软件 此外 xff0c 如果你使用接口软件制作音乐 xff0c 这是非常简单和有效的使用 这将有助于你的工作变得井井有条 此外 xff0c 它还将为您提供一个集成的开发环境 而且 xff0c 这个软
  • Vim的三种模式以及基本操作

    基本上 vi vim 共分为三种模式 xff0c 分别是命令模式 xff08 Command mode xff09 xff0c 输入模式 xff08 Insert mode xff09 和底线命令模式 xff08 Last line mod
  • java的内部类的理解之一

    A类不能在A类里面创建对象 如果A是B的内部类 则A类可以在A的外部 B的内部创建对象 目录 一 内部类基础 1 成员内部类 2 局部内部类 3 匿名内部类 4 静态内部类 二 深入理解内部类 1 为什么成员内部类可以无条件访问外部类的成员
  • python内部类的理解

    案例一 class parent def init self self name 61 34 parent 34 def getName self print self name class child def init self self
  • java内部类的理解之二

    内部类Inner Class 将相关的类组织在一起 xff0c 从而降低了命名空间的混乱 一个内部类可以定义在另一个类里 xff0c 可以定义在函数里 xff0c 甚至可以作为一个表达式的一部分 Java中的内部类共分为四种 xff1a 静
  • java内部类的理解之四

    内部类是指在一个外部类的内部再定义一个类 类名不需要和文件夹相同 内部类可以是静态static的 xff0c 也可用public xff0c default xff0c protected和private修饰 xff08 而外部顶级类即类名
  • java内部类的理解之三

    java中的内部类总结 内部类不是很好理解 xff0c 但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑 肢体 器官等身体结果组成 xff0c 而内部类相当于其中的某个器官之一 xff0c 例如心脏 xff1a 它也有自己的
  • c++语言基础知识总结

    目录 一 程序书写tips 二 multi sources处理 三 关键字 四 输入流和输出流 1 输出 2 输入 五 数据类型 1 简单数据类型 1 常量 2 转义字符 2 容器数据类型 1 枚举 2 字符串 3 数组 4 指针 5 引用
  • 一些有用的在线帮助文档(微软,C/C++,Java,linux)

    linux 系统调用和 函数库 你点2 和 3 http www kernel org doc man pages 微软全家桶的帮助Doc http msdn microsoft com en us library ms123401 asp
  • C语言基础知识总结

    目录 一 程序书写tips 二 multi sources处理 请看这篇文章 三 关键字 四 输入流和输出流 1 输出 2 输入 五 数据类型 1 简单数据类型 2 容器数据类型 1 数组 2 字符串 2 枚举 3 指针 3 结构体 4 位
  • 彻底解决VS的4996警告

    方法一 xff1a 使用安全的函数替换老的函数 方法二 xff1a 屏蔽警告信息 1 在文件最前面加上 pragma warning disable 4996 2 在头文件里定义下面的宏 xff1a define CRT SECURE NO
  • easyrecovery免费版2023最新电脑数据恢复软件

    通常 xff0c 许多人会将工作或生活中的数据存储在我们的计算机上 很多时候 xff0c 由于我们的误操作或其他一些问题 xff0c 很容易错误地删除一些文件和数据 特别是 xff0c 一些计算机故障总是会导致数据丢失 xff0c 这是非常
  • C语言fread和fwrite

    对文件格式化读写函数 fprintf 与 fscanf 而言 xff0c 尽管它可以从磁盘文件中读写任何类型的文件 xff0c 即读写的文件类型可以是文本文件 二进制文件 xff0c 也可以是其他形式的文件 但是 xff0c 对二进制文件的
  • C语言文件定位函数rewind和fseek

    文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个 xff0c 即 rewind 和 fseek rewind 用来将位置指针移动到文件开头 xff0c 前面已经多次使用过 xff0c 它的原型为 xff1a voi
  • 文件中的EOF是什么

    1 EOF 定义在 usr include stdio h 文件中 xff1a 从上面 EOF 的定义我们可以看出 EOF 本质上就是一个值为 1的常量 xff01 2 在Linux系统之中 xff0c EOF根本不是一个字符 xff0c
  • C语言命令行参数

    argc 是指传入参数的个数 xff0c argv 是一个指针数组 xff0c 指向传递给程序的每个参数 include lt stdio h gt int main int argc char argv if argc 61 61 2 p
  • C/C++程序的内存分配

    一个由C C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区 xff08 stack xff09 由编译器自动分配释放 xff0c 存放函数的参数值 xff0c 局部变量的值等 其操作方式类似于数据结构中的栈 2 堆区 xff0