编译过程

把源代码文件转换成可执行文件

  1. 预处理:编译前先执行以 # 开头的预处理指令
  1. 编译:编译器先把源代码转换成中间代码
  2. 链接:链接器把中间代码、库文件代码(二进制文件)和系统代码合并

define和typedef的区别

内存管理

以下四个内存管理函数可在 stdlib.h 头文件中找到

void * 类型是未确定类型的指针,可以强制类型转换为其它类型的指针

以下内存操作都是在堆中进行

  1. void *calloc(int num, int size);

在堆区动态分配num块size字节的连续空间, 且初始化为 0

  1. void *malloc(int size);

在堆区动态分配一块 size 字节的连续空间

  1. void free(void *address);

释放指向的动态分配内存空间, 不会将指针置空(注意: 要手动设置原指针为 null, 防止野指针的出现)