1.new/delete和malloc/free之间的关系?
相同点:都可以用于动态申请内存和释放内存; 不同点: 1.操作对象不同; malloc/free是C++/C语言的标准库函数,new/delete是C++的运算符。 C++是面向对象的语言,对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限范 围之内,不能把执行构造函数和析构函数的任务强加给malloc/free。 2.用法上也有所不同: a.用malloc申请一块长度为length的整数类型的内存,程序如下: int *p = (int*)malloc(sizeof(int)* length);我们应该把注意力集中在两个要素上:“类型转换”和sizeof。 Ⅰ.malloc函数的返回值类型是void*,所以在调用malloc时要显示地进行类型转换,将void*转换成所需要的指针类型; Ⅱ.malloc函数本身并不识别申请的内存是什么类型,它只关心内存的总字节数。



