首页 > 其他 > 详细

应用层对new,free混合搭配的分析

时间:2021-06-05 18:07:00      阅读:8      评论:0      收藏:0      [点我收藏+]

free

free(NULL)合法
free(野指针)大概率崩溃,小概率没事,具体要分析源代码
连续两次free,在一些非常有限的情况下,不会崩溃
多次free,在大多数情况下会导致崩溃

手动调用构造和析构函数

比较诡异,c++可以显示调用析构函数,比如A a;a.~A,但是不能显式调用构造函数
并且,编译器会在对象生命周期结束时,自动调用构造函数
利用定位new表达式可以显示调用构造函数,定位new就这一个用途

operator new

operator new是可以重载的函数

首先new operator 和 operator new不一样,不清楚的百度一下
operator new是一个可以用户重载的函数,负责开辟空间(不负责初始化、调用构造函数)
全局operator new一般默认调用malloca开辟空间,全局operator new不应该被重载

但是,可以在类里面重载operator new

编译器在new class()的时候会自动调用重载的operator new,分配空间

特别是,在基类里面重载operator new,会应用到所有派生类

这是一种特别优雅的做法,应用于大规模库比如MFC
operator new重载有一些规定,自己百度

new operator

new operator是运算符

c++标准保证了new operator的行为 :先分配内存,然后初始化
new的时候,本质上先调用operator new分配内存,然后再调用构造函数

new []

如何限制对象只能建立在堆上或者栈上或者全局静态空间

应用层对new,free混合搭配的分析

原文:https://www.cnblogs.com/XDU-mzb/p/14852289.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!