技术交流QQ群:1027579432,欢迎你的加入!
区别如下:
- new会分配内存,并调用类的构造函数创建对象
- malloc只是分配内存,不调用类的构造函数创建对象
实例如下:
#include <iostream> #include "cstdio" #include "cstdlib" using namespace std; class A { public: A() { printf("A"); } }; class B{ public: private: }; int main() { cout << "sizeof(B) = " <<sizeof(B) << endl; A *p1 = new A; delete p1; // 虽然不会崩溃,但是会发生内存泄漏,不是好的编程习惯,所以加上这句 A *p2 = (A *)malloc(sizeof(A)); free (p2); // 虽然不会崩溃,但是会发生内存泄漏,不是好的编程习惯,所以加上这句 return 0; }