C++中free()与delete的区别
1、new/delete是C++的操作符,⽽malloc/free是C中的函数。
2newdeletemallocfree
、做两件事,⼀是分配内存,⼆是调⽤类的构造函数;同样,会调⽤类的析构函数和释放内存。⽽和
只是分配和释放内存。
3newmallocnew
、建⽴的是⼀个对象,⽽分配的是⼀块内存;建⽴的对象可以⽤成员函数访问,不要直接访问它的地址空
间;分配的是⼀块内存区域,⽤指针访问,可以在⾥⾯移动指针;出来的指针是带有类型信息的,⽽返回
mallocnewmalloc
的是指针。
void
4new/deletemalloc/free
、是保留字,不需要头⽂件⽀持;需要头⽂件库函数⽀持。
我们看⼀看和如何实现对象的动态内存管理,见⽰例。
malloc/freenew/delete
1 class Obj
2 {
3 public:
4 Obj() { cout << "Initialization" << endl; }
5 ~Obj() { cout << "Destroy邓稼先教案 " << endl; }
6 void Initialize() { cout << "Initialization" << endl; }
7 void Destroy() { cout << "Destroy" << endl; }
8 };
9
10 木耳炒蛋 void UMalloc玫瑰代表什么意思 Free()
11 {
12 Obj *a = (Obj*)malloc(sizeof(obj));
13 a->Intialize();
14 // ...
15 a->De贵阳周边 stroy();
16 free(a);
17 }
18
19 void UNewDelete()
20 {
21 Ob教师党员承诺书 j *a = new Obj;
22 //...
23 delete a;
24 }
类Obj的函数Initialize模拟了构造函数的功能,函数Destroy模拟了析构函数的功能。函数UMallocFree中,由于m韶关美食 alloc/free
不能执⾏构造函数与析构函数,必须调⽤成员函数Initialize和Destroy来完为什么老打哈欠 成初始化与清除⼯作。函数UNewDelete则简单
得多。
这只是个例⼦,不会有⼈⽤malloc/free来创建类对象。另外,new和delete配套使⽤,new[]和del永远之后 ete[]配套使⽤。
本文发布于:2023-04-22 10:36:24,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/82/509144.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |