1、new和malloc的区别
对于自定义类型:
new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员 变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。
malloc/free是库函数,只能动态的申请和释放内存,无法强制要求其做自定义类型对象构造和析构工作。
2、指针和引用
空指针不指向任何对象,在试图使用一个指针之前可以检查它是否为空,void*是一种特殊类型的指针,可用于存放任意对象的地址。
- 指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。
- 可以有const指针,但是没有const引用;
- 指针可以有多级,但是引用只能是一级。