1. 程式人生 > >C++基礎 new和delete

C++基礎 new和delete

style 析構函數 對比 pan delete 基本數據類型 交叉 del 報錯

1.new delete 的使用

(1)基本數據類型

int *p = new int(10);
delete p;
int *p = (int *)malloc(sizeof(int)); *p = 10;
free(p);

(2)數組

int *p = new int[10];
delete []p;

int *p = (int *)malloc(10 * sizeof(int));
free(p);

(3)類對象

Test *p = new Test;
delete p;

2.new delete 和 free malloc 的對比

(1)new、delete 是C++操作符,free、malloc是C函數

(2)new除了會分配空間還會自動調用構造函數,delete會調用析構函數。

3.new 和 malloc 交叉使用

Test *p = new Test;
free(p);

Test *p = (Test *)malloc(sizeof(Test));
delete p;

不會報錯,唯一區別就是 free不會調用析構函數,malloc不會調用構造函數。

C++基礎 new和delete