c++中的new和delete

2020-05-19  本文已影响0人  潘雪雯

用法。

int *p = (int *)malloc(sizeof(int));
*p = 10;
int *p2 = new int;//分配基础类型
*p = 20;    
int *p3 = new int(30);

new char[10];开辟一个存放字符数组的存储空间,返回首元素的地址(即指针)
new int[5][4];开辟一个存放二维整型数组的空间,返回一首元素的地址(即指针)

int *p = (int *)malloc(sizeof(int) * 10);
p[0] = 1;
free(p);
//c++分配数组
int *pArray = new int[10];
pArray[1] = 2;
delete [] pArray;//数组不要把[]忘记 

*float p = new float(3.14159)开辟一个存放单精度数的空间,并指定该实数的初值为3.14159,将返回该空间的地址(即指针)赋给指针变量p。

new、delelte和malloc、free的不同点

  1. c语言中malloc和free是库函数,
    c++中new和delete是运算符
  2. malloc不会调用类的析构函数,new能执行类的构造函数
    free不会调用类的析构函数,delete能执行类的析构函数
  3. new和delete操作符分配内存成功时返回对象类型的指针,分配失败时会抛出bac_alloc异常,不会返回NULL。
  4. 申请的内存所在位置: new从自由存储区上为对象动态分配内存,malloc函数从堆上动态分配内存
  5. new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算,而malloc需要显示的指出所需内存的尺寸malloc(sizeof(A))
上一篇下一篇

猜你喜欢

热点阅读