程序中的三国

时间:2021-10-18 16:44:46
程序中的栈
1,栈是现代计算机程序里最为重要的概念之一
2,   栈在程序中用于维护函数调用上下文,没有栈就没有函数,没有局部变量
3,栈保存了一个函数调用所需要的维护信息
         函数参数,函数返回地址
         局部变量
         函数调用上下文

程序中的堆
1, 为什么有了栈还需要堆?
      栈上的数据在函数返回后就会被释放掉,无法传递到函数外部,如局部数组
2,堆是程序中一块巨大的内存空间,可由程序*使用
3,堆中被程序申请使用的内存在程序主动释放前将一直有效
4,堆空间通过申请才能获得
5,系统对堆空间的管理方式
       空闲链表法,位图法,对象池法等等
          程序中的三国

         
           这说清了几个问题:
                  a,如果申请不成功时,为什么会返回NULL.
                  b,free(p);的作用是重新将p这个结点插入到这个链表中
                  c,sizeof(int)4个字节,但此时会去找靠近4,或比4大那么一点的一个结点,把它摘下来赋给p
                  d, 虽然我们每次申请的都有可能多那么一点点的空间,但我们不能打这点空间的主意
程序中的三国
程序中的静态存储区
1,程序表态存储区随着程序的运行而分配空间,直到程序运行结束
2,在程序的编译期静态存储区的大小就已经确定
3,程序的静态存储区主要用于保存程序中的全局变量和静态变量
4,与栈和堆不同,静态存储区的信息最终会保存到可执行程序中

小结
1,栈,堆和静态存储区是C语言程序常涉及的三个基本内存区
2,栈区主要用于函数调用的使用
3,堆区主要是用于内存的动态申请和归还
4,表态存储区用于保存全局变量和静态变量