****malloc与new的区别
malloc | new |
---|---|
函数 | 关键字 |
只能开辟空间 | 不仅能开辟空间和可以初始化 |
在堆上开辟 | 在自由的存储区域中开辟 |
内存不足时返回NUL | 内存不足时,抛出异常 |
C与C++开辟与释放内存所使用的函数/关键字
在C中开辟内存 | malloc |
在C中释放内存 | free |
在C++中开辟内存 | new |
在C++中释放内存 | delete |
在C中开辟内存使用“malloc”
1、开辟内存
int *p=(int*)malloc(sizeof(int));//之后需要将开辟的内存free掉否则会造成内存泄漏
2、开辟二维数组
int arr[4][4];
int *arr=(int*)malloc(sizeof(int*)*4);
for(int i=0;i<4;++i)
{
arr[i]=(int *)malloc(sizeof(int)*4);
}
/*
for(int i=0;i<4;i++)
{
free(arr[i]);
}
free(arr);
*/
在C++中开辟内存使用 “new”
1、开辟内存
int *cpp=new int();//创建新的内存,并将其初始化为0
//需要用delete将其开辟的空间销毁掉
2、开辟二维数组
int *arr= new int*[4];
for(int i=0;i<4;i++)
{
arr[i]=new int[4];
}
/*
for(int i=0;i<4;i++)
{
deiete arr[i];
}
delete arr;
*/
C++中内存开辟与释放
new:1、开辟内存;2、初始化
delete:1、释放/销毁资源;2、释放空间
int *arr= | new int[]//开辟一个数组 |
int *arr= | new int;//开辟一个数组并将其里面存放的数值初始化为0 |
int *arr= | new int();//创建新的内存,并将其初始化为0 |
销毁开辟的数组的空间 | delete[]arr; |
销毁开辟的内存资源 | delete arr; |