本文PDF下载站点: https://github.com/MrWang522/Private-Document.git
1. 运算符 new/delete
new 运算符:动态分配堆内存, 如果分配失败,返回一个空指针NULLdelete 运算符:释放已分配的内存空间
int *p1
= new int;
int *p2
= new int(100);
char *p3
= new char[100];
int *p4
= new int[5][4];
delete p1
;
delete p2
;
delete []p3
;
delete []p4
;
2. 使用举例
2.1 基础类型
int *p
= (int *)malloc(sizeof(int));
*p
= 10;
free(p
);
int *p2
= new int;
*p2
= 20;
delete p2
;
int *p3
= new int(30);
cout
<< "*p3 = " << *p3
<<endl
;
delete p3
;
2.2 数组变量
int *p
= (int *)malloc(sizeof(int) * 10);
free(p
);
int *pArray
= new int[10] ;
pArray
[1] = 2;
delete [] pArray
;
2.3 类对象 !!!
Test
*pT1
= (Test
*)malloc(sizeof(Test
));
free(pT1
);
Test
*pT2
= new Test(10);
delete pT2
;
3. 与 malloc()/free() 区别
malloc()/free() 是标准库函数, 使用前需调用库头文件 <stdlib.h> 方可使用; 而 new/delete 是运算符,执行效率更高。malloc() 需要手工计算字节数; 而 new 能够自动计算需要分配的内存空间。malloc() 返回的指针是 void * 类型; 而 new 返回的指针是它分配空间的类型。new 时调用构造函数,而 malloc() 不能;delete 时调用析构函数,而 free() 不能。new 在申请单个类型变量时可以赋初值,而 malloc() 不具备。
☚
写文不易 且行且珍惜 ☛
☚
MrWang ☛
转载请注明原文地址:https://ipadbbs.8miu.com/read-25435.html