c++中的new()与delete()和C语言中molloc()与free()相对应。
malloc
int *p;
p=(int*)malloc(sizeof(int)*100);
1、new
(1)用法
法1:
int *p;
p=new type;//其中type是类型,只分配堆内存。
法2:
int *p;
p=new type(x);//其中将分配到堆内存初始化为x;
法3:
int *p;
p=new type[n];//分配具有n个元素的数组;
(2)如果分配不成功则返回空指针0,在程序中可以用0作为判断内存分配成功与否的根据。
2、delete
(1)用法
法1:
int *p;
delete p;//用于释放动态分配的单个指针变量。
法2:
int *p;
delete []p;//用于释放动态分配的数组存储区域。
例如:
#include <iostream>
using namespace std;
int main()
{
int *p1;
p1=new int;
*p1=5;
cout<<"p1 address"<<p1<<"值"<<*p1<<endl;
delete p1;
int *p2;
p2=new int(10);//这里相当于*p2=10;
cout<<"p2 address"<<p2<<"值"<<*p2<<endl;
delete p2;
int *p3;
p3=new int[10];
*p3=1;
p3[1]=2;
p3[2]=3;
cout<<"p3[0] address"<<p3<<"值"<<*p3<<endl;//这里不能改为p3[0];
cout<<"p3[1] address"<<&p3[1]<<"值"<<p3[1]<<endl;
delete []p3;
return 0;
}
3、一片空间不能被delete多次。