zoukankan      html  css  js  c++  java
  • C程序的内存分区(节选自黑马训练营day1)

    一般来说,每个C语言编写的程序都需要经过保存,预处理,编译,汇编,链接,最后生成二进制可执行文件,然后才能运行。这个可执行文件在运行之前,存放在电脑硬盘;执行的时候,被调入内存。

    同时,我们要了解:组成C语言程序的不同的元素(如变量、常量、指令等)要放在内存中不同的地方,我们看下图:

    这个就是内存的分区表格,C编译器将内存划分成几个分区,将C语言程序的不同元素放入不同的分区。不同分区不仅仅存放的程序元素不同,而且生命周期不同。管理内存加载和释放的管理者也不同。代码区和程序数据区(或者叫静态区、全局区)是编译器(也许是操作系统)管理,堆区是程序员管理(有的编译器也帮助管理,作为防火墙性质地存在,防止程序员忘记释放内存),栈区则是实时加载和释放,函数的参数值、返回值、局部变量等随着函数运行结束,自动加载,自动释放(这个应该是编译器管理)。

    其实,按照C语言程序的生命周期,整个内存分区可以分为三个部分:

    第一部分:代码区和程序数据区,存放指令和全局变量、静态变量、常量,生命周期是整个程序运行过程。

    第二部分:堆区,存放内容及生命周期由程序员指定。

    第三部分:栈区,存放函数的参数值、返回值、局部变量,相关内存的内容随着函数结束运行而释放。

  • 相关阅读:
    高效、稳定开发功能的一些心得
    记录一些遗忘的程序基础知识
    Linux NFS
    Nginx Upstream模块
    Redis命令总结
    手动搭建redis集群(3台)
    laravel使用总结(二)
    InnoDB体系架构总结(二)
    laravel 设计思想简单了解
    Redis原理及集群相关知识
  • 原文地址:https://www.cnblogs.com/GoldCrop/p/11030984.html
Copyright © 2011-2022 走看看