int *p=new int(5);
delete p;
int *p=new int[10]();
delete [] p;
在C语言中申请动态内存 :
int main(){
int *p=(int *)malloc(sizeof(int)); //malloc是库函数,它只负责开辟空间,并不会初始化该内容,该空间的内容是不确定的。需要 使用memset或bzero清零。
*p=10;
free(p); //malloc的空间用free释放
}
在C++中申请动态内存:
例1:
int main(){
int *p=new int(1); //开辟空间,放入初值1.new是一个表达式,它负责开辟空间,并且能够初始化该空间的内容的。
delete p; //new出来的空间用delete释放
}
例2:
int main(){
int *p=new int[10]; //在堆上申请10个连续空间。在在ubuntu下这10个空间会初始化为0,其他环境下可能不为0
for(int i=0;i<10;i++){
cout << p[i] << endl;
}
delete [] p; //释放数组。对于数组的释放,必须加上[]
}
例3:
int main(){
int *p=new int[10](); //在后面加一个括号,则可以初始化值为0。不加括号的时候,在ubuntu下会初始化为0,在其他 平台下可能不会初始化为0.加上()后无论什么平台都会初始化为0
for(int i=0;i<10;i++){
cout << p[i] << endl;
}
delete [] p;
}