码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 内存管理--内存布局


    内存管理——内存布局
    代码区、常量区、静态区(全局区)、堆区、栈区
    const 关键字详解
    底层内存分布
    在这里插入图片描述
    代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的;
    常量区:存放常量(程序在运行时不能被改变的量),例如:10,字符串常量:“abcd”;数组名;
    静态区(全局区):静态变量和全局变量的存储区域是一起的;一旦静态区的内存被分配,静态区的内存直到程序结束之后才会被释放;
    堆区:由程序员调用**malloc()**函数来主动申请的,需使用free()函数来释放内存,若申请的堆区内存,之后忘记释放,就会造成内存泄漏问题;
    栈区:存放函数的局部变量、形参和函数返回值,栈区之中的数据作用范围过了之后,系统就会自动回收内存。

    在栈上创建数组时,不能使用含有变量的表达式,如:int a[x+2]是错误的。
    在栈上创建的数组,编译时就需要在栈上分配内存,可是有了变量以后,编译器就无法知道分配多大的内存了,编译器就会报错。
    在堆上可以动态创建数组,因为在堆上创建数组时,编译器不会做编译时分配内存,而是在程序运行时分配内存,我们可以知道,程序运行时变量的值就会明确还多少,故动态创建数组时就可以出现变量。

    static关键字
    (1)用于修饰局部变量,全局变量和函数;
    (2)存放在静态区;
    (3)定义时没有初始化时,会将其初始化为0;
    (4)修饰局部变量时,函数返回时,值不变
    (5)修饰全局变量和函数时,只在当前文件可见,降低程序模块之间的耦合性。

    const关键字
    (1)被修饰的变量不可被修改;
    (2)存放在常量区;
    (3)const修饰的普通变量:定义时就是赋初值,后面就不能被修改了;
    (4)const修饰的全局变量存放在常量区,也不可修改。
    (5)const修饰的变量并不会存放在全局(静态)区,而是取决于他定义的地方,局部定义就是在栈区,全局定义就是在静态区。

    static和const区别
    static修饰的变量称为静态变量,存储在全局(静态)区,生命周期程序编译到运行结束;
    const修饰的变量并不会存放在全局(静态)区,而是取决于它定义的地方,局部定义的就存在栈区,全局定义的就存放在静态区。
    const修饰的变量不能被修改,为什么不放在只读数据区呢,是因为C语言中使用const修饰了一个变量,该变量不能直接修改,但是可以通过拿到这个变量的地址来修改这个变量。
    在这里插入图片描述
    但是如果修饰的字符串常量,那就无论如何也修改不了的。

  • 相关阅读:
    酷早报:9月5日Web3加密行业新闻大汇总
    调用内部或私有方法的N种方法
    【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——上
    CSS3心跳和小球跳动animation案例
    如何定时备份使用Docker构建的MySQL容器中的数据库
    【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】
    Linux centos7 bash编程(循环与条件判断)
    FPGA实现直流电机驱动(速度位置控制)
    论文翻译:Large Language Models for Education: A Survey
    【Redis】# 常见报错Unsatisfied dependency、设置密码、主从配置
  • 原文地址:https://blog.csdn.net/weixin_42097108/article/details/125536556
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号