new和malloc在内部实现上有着明显的区别。new操作符是C++提供的,而malloc函数是C提供的,用于在堆上分配内存。
new操作符
new操作符用于在堆上分配内存,并调用类的构造函数来初始化对象。它提供了一种更加优雅的内存分配方式,可以自动调用构造函数,而不需要手动调用构造函数。
int* p = new int; // 分配一个int类型的内存
new操作符还可以用于分配数组,它可以分配一块连续的内存,并自动调用构造函数来初始化每个元素。
int* p = new int[10]; // 分配一个int类型的数组
malloc函数
malloc函数用于在堆上分配内存,但它不会调用构造函数来初始化内存,而是将内存初始化为未知值。
int* p = (int*)malloc(sizeof(int)); // 分配一个int类型的内存
malloc函数也可以用于分配数组,它可以分配一块连续的内存,但不会调用构造函数来初始化每个元素。
int* p = (int*)malloc(sizeof(int) * 10); // 分配一个int类型的数组
new操作符和malloc函数的区别在于:new操作符可以调用构造函数来初始化对象,而malloc函数不会调用构造函数来初始化内存。