C++中free()与delete的区别

更新时间:2023-04-22 10:36:24 阅读: 评论:0


2023年4月22妈妈的乳汁 日发(作者:车辆监控)

C++free()与delete的区别

1new/deleteC++的操作符,⽽malloc/freeC中的函数。

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

不能执⾏构造函数与析构函数,必须调⽤成员函数InitializeDestroy来完为什么老打哈欠 成初始化与清除⼯作。函数UNewDelete则简单

得多。

这只是个例⼦,不会有⼈⽤malloc/free来创建类对象。另外,newdelete配套使⽤,new[]del永远之后 ete[]配套使⽤。


本文发布于:2023-04-22 10:36:24,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/509144.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:free函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图