malloc 与 new 创建对象的区别

建一个person 类(这里以结构体代替)

struct person{
    int m_age;
    person(){
        std::cout << "person::person()" << std::endl;
    }
    void run(){
        std::cout << "person::run()"<< m_age << std::endl;
    }
};

同时以malloc 方式新建一个对象

 person *mp = (person *)malloc(sizeof(person));
    mp->m_age = 20;
    mp->run();

打印结果为

image.png

可以看到构造函数并没有执行

new创建一个对象

person *np = new person;
    np->m_age = 10;
    np->run();

打印结果为

Hello, World!
person::person()
person::run()10
Program ended with exit code: 0

可以看到构造函数被执行

结论:

malloc 创建对象不会执行构造函数
new 创建对象会执行构造函数

你可能感兴趣的:(malloc 与 new 创建对象的区别)