3. new/delete malloc/free

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值