美文网首页
4.C语言程序执行的流程

4.C语言程序执行的流程

作者: a_tomcat | 来源:发表于2017-04-04 15:40 被阅读0次

根据大学所学的知识,我们知道程序都是需要被加载到内存中才能被执行的,而加载到内存当中的数据只能是1或0,即高电频或低电频。那么操作系统如何去识别内存中0011究竟是代码还是数据还是函数或者常量呢?下面我们就简单说一下程序的执行流程。

  1. 将编译后的程序加载到操作系统的执行内存中。
  2. 操作系统把加载到内存中的数据进行人为的分区,大致分为:
  • .data区:常量区,存放程序中的所有静态常量,相当于java中的public static 的常量,在C语言中则是通过宏定义(define)声明的常量。
  • .code区:方法区,存放funcation编译后的声明和实现的描述(其实也是0101).
  • 栈(Stack)空间:程序运行时存放变量的空间,大小由操作系统指定,是一块连续的内存空间,访问速度和效率比Heap要高一些。
  • 堆(Heap)空间:存放对象的一块不连续的内存空间,访问、存储效率比栈稍低。
  1. 划分好区域并将对应的数据加载到各自分区后,各个内存分区开始配合工作,举例:
#include<stdio.h>
#define PI 3.1415
void swap(int* p, int* q){
     int temp;
     temp = *p;
     *p=*q;
     *q = temp;
}

int main(){
    int i = 3;
    int j = 5;
    swap(&i,&j);
    printf("i=%d\n",i);
    printf("j=%d\n",j);
    system("pause");   
}
首先操作系统会将define的PI常量放到.data区中,然后从.code区寻找入口函数main()开始执行,
第一行会在栈空间中申请内存空间存放int i=3;
第二行在栈空间中申请内存存放int j=5;
第三行系统会去.code区寻找swap(int* p, int* q)函数并执行,先在栈空间申请内存创建p和q这两个形参,然后申请栈内存创建int temp...当函数执行完之后,栈空间发现p、q、temp已经没有程序在使用了,就会对这个几个局部变量执行出栈操作,腾出内存空间;第四、第五、第六行以此类推。

最后简单说一下堆内存与malloc()函数:动态分配内存空间,也就是向Heap申请一块指定字节大小的内存。例:

#include <stdlib.h>
char *ptr = (char *)malloc(10); 
ptr被存放在栈中,malloc(10)向Heap申请了10个字节的内存空间用来存放字符,当使用完毕之后需手动释放

相关文章

  • 4.C语言程序执行的流程

    根据大学所学的知识,我们知道程序都是需要被加载到内存中才能被执行的,而加载到内存当中的数据只能是1或0,即高电频或...

  • V8 工作原理

    编译器和解释器 按语言的执行流程,可以把语言划分为编译型语言和解释型语言。 编译型语言在程序执行之前,需要经过编译...

  • GO语言——条件判断与基础函数(2)

    一、流程控制 程序设计语言的流程控住语句,用于设定计算执行的次序,建立程序的逻辑结构。可以说,流程控制语句是整个程...

  • C语言学习之二——顺序程序设计

    程序的基本结构(从程序流程角度):1)顺序结构;2)分支结构;3)循环结构 C语言的程序功能是由执行语句实现的,语...

  • 【go语言学习】流程控制

    流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。程序的流程控制结构一共...

  • C语言基础继续讲讲(循环语句-数组)

    C语言基础 三大执行流程 顺序执行流程 条件执行流程if语句if(条件){ 语句体}如果条件成立,就执行{}...

  • AndroidNDK——makefile语法详解

    一、编译流程详解 编译流程 编译:将高级语言编写的程序转换为二进制代码可执行性目标程序的过程 四大过程:预处理、编...

  • 5.Golang流程控制

    一、程序结构说到流程控制,必须先看下 Go 语言的程序结构: 程序的初始化和执行都起始于 main package...

  • 十、Java的流程控制(分支选择)

    其实也不能说是Java的流程控制,应该说所有的编程语言的流程控制,都包括三类: 1:顺序执行:程序的执行都是从上到...

  • 第2章:Java基本语法(流程控制和数组)

    时间:2018-07-17 作者:魏文应 程序流程控制 程序流程控制中,有:顺序执行、条件执行、循环执行。 一、...

网友评论

      本文标题:4.C语言程序执行的流程

      本文链接:https://www.haomeiwen.com/subject/ignaottx.html