技术交流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;
        }