Loading

malloc/free 与 new/delete

malloc/free与new/delete表达式的区别?
相同点: 都是用来申请堆空间

不同点:
 1. malloc/free是库函数; new/delete是表达式
 2. malloc开空间时,并不会进行初始化;new表达式是可以进行初始化

void test0()
{
  int * p0;

  int * p1 = (int *)malloc(sizeof(int));//系统调用
  ::memset(p1, 0, sizeof(int));
  //bzero();
  *p1 = 10;
  printf("*p = %d\n", *p1);

  free(p1);


  int * p2 = (int *)malloc(sizeof(int) * 10);

  free(p2);
}

void test1()
{
  int * p1 = new int(1);
  cout << "*p1 = " << *p1 << endl;

  delete p1;

  int * p2 = new int[10]();//对于数组的申请需要加上[]
  //加上小括号是有初始化
  //不加小括号是不会进行初始化
  delete [] p2;
}

posted @ 2019-10-31 09:48  RainDavi  阅读(100)  评论(0编辑  收藏  举报