1,main函数
C程序总是从main函数开始执行的,原型:
int main(int argc, char *argv[]);
argc是命令行参数数目,arfv是指向参数的各个指针所构成的数组。
2,进程终止
进程终止的方式:
1,main返回
2,调用exit
3,调用_exit或-EXIT
4,最后一个线程从其启动例程返回
5,从最后一个线程调用pthread_exit
6,调用abort
7,接到一个信号
8,最后一个线程对取消请求做出响应
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9EUZ0hnMk5mTXRGd5cVWwh2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0IjNyITOxUTM3EjNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
3,命令行参数
当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序。
4,环境表
每个程序都接收到一张环境表。与参数表一样,也是一个字符指针数组,其中每个指针包含一个以null结束的C字符串地址。全局变量environ包含了该指针数组的地址:extren char **environ;
5,C程序的存储空间布局
下图为典型的存储空间安排:
6,存储空间分配
ISO C说明了3个用于存储空间动态分配的函数:
(1)malloc,分配指定字节数的存储区,此存储区中的初始值不确定
(2)calloc,未指定数量指定长度的对象分配存储空间,该空间中的每一位(bit)都初始化为0
(3)realloc,增加或减少以前分配的长度,当增加长度时,可能需要将以前分配区的内容移到另一个足够大的区域,以便在尾端提供增加的存储区,而新增区域的初始值则不确定