mallocnew时堆空间初始化;是否调⽤构造函数malloc free 不会调⽤构造函数
//void *malloc(size_t size)
//类型⼤⼩
char*p =(char*)malloc(4);
free(p)
new delete 会调⽤构造函数;有()会初始化,前提没有⾃定义构造函数
// new + 类型
molloc函数int*p =new int;
delete p;
new[] delete[]
//分配数组加[]
char*p =new char[4];
delete[] p;
new初始化
int*p1 =new int;//未被初始化
//会调⽤memset
int*p2 =new int();//初始化为0
int*p3 =new int(5);//初始化为5
int*p4 =new int[3];//未被初始化
int*p5 =new int[3]();//初始化为0
int*p3 =new int[3]{};//初始化为0
int*p3 =new int[3]{5};//⾸元素初始化为5,其余初始化为0
void *memset(void *dest,int val,size_t size)
//将四个字节中的每⼀个字节设置为1
met(p,1,4);
总结
通过malloc、new申请堆空间
malloc不会初始化堆空间;int *p = new int()、int *p = new int[3]{}会初始化堆空间。
malloc不会调⽤构造函数;new会调⽤构造函数。
什么时候⽣成默认构造函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论