C++笔记:malloc与new的区别

C/C++:malloc与new的区别

  在创建一个自定义类型数据的对象(如结构体、类等),malloc函数只会为其在堆(Heap)中分配内存,返回一个空(void *)指针;而操作符new会为其在自由储存区(Free Store)中分配内存,并调用构造函数为其初始化,并且返回一个相应类型的指针。

代码

#include<iostream>
#include<stdlib.h>

using namespace std;

struct Test
{
    //使用new创建对象时,成员a会被初始化为0
    int a = 0;
};

int main()
{
    int *a = (int *) malloc(sizeof(int));
    int *b = new int;
    Test *c = (Test *) malloc(sizeof(Test));
    Test *d = new Test;

    cout<< *a<< " "<< *b<< endl;
    cout<< c->a<< " "<< d->a<< endl;

    return 0;
}

运行结果

img

posted @ 2022-11-19 15:31  YusJade  阅读(102)  评论(0)    收藏  举报