- GCC:GNU Compiler Collection(GUN 编译器集合)可以编译多种语言
- gcc和g++是其中的两种:这两个只是驱动器,并不是编译器,只是会调用GNU
gcc | g++ | |
编译器类型 | C编译器 | C++编译器 |
对.c和.cpp文件 | 分别当做c和cpp文件编译 | 统一当做cpp文件编译 |
STL | 而gcc不会自动链接STL | g++会自动链接标准库STL |
宏的使用 | .c 可使用的预定义宏是比较少 .cpp会加入一些额外的宏 | 都会加入一些额外的宏 |
对STL的使用 | 需要加参数 –lstdc++ | 不需要额外加参数 |
malloc:void *malloc(unsigned int size)
在内存的动态分配区域中分配一个长度为size的连续空间,分配成功则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会初始化,存储的是一些数据数据
calloc:void *calloc(unsigned int num,unsigned int size)
按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。
calloc申请内存空间后,会自动初始化内存空间为 0
realloc: void *realloc(void *ptr,unsigned int size)
动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size,申请的空间不会初始化
new :是动态分配内存的运算符,自动计算需要的空间,同时调用类的构造函数,对内存空间进行对类的初始化。动态分配内置类型推导是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量都不进行初始化