new返回的地址是自动转换的
malloc返回的地址是需要强转的
new是运算符,可以调用重载运算符函数(operator)进行重载
而malloc虽然是函数,但是参数固定不能进行函数重载
new是不需要传参的,它分配空间的大小由编译器根据类型计算得出
而malloc是需要传参的,传递的是具体开辟空间的大小的字节数
new是先调用malloc函数,先在堆区中开辟,如果这段空间的类型是类的话,会调用构造函数,对对象里面的成员变量进行赋值
而malloc仅仅只是在堆区中开辟空间
new开辟空间失败会抛出一段异常
而malloc会返回一个空指针
new不支持内存的扩张
malloc可以调用realloc扩张内存
1.定义指针变量的时候就没有进行初始化
2.一个指针变量指向的堆区空间被释放了,但是却忘记赋空
3.数组越界了
1.如果指针变量暂时没有初始化的值,就把它先变为空指针
2.记得释放完堆区空间之后,及时赋值为空
3.注意数组边界问题