标签:编译器 oca 运算 情况下 null 野指针 一个 free let
free(NULL)合法
free(野指针)大概率崩溃,小概率没事,具体要分析源代码
连续两次free,在一些非常有限的情况下,不会崩溃
多次free,在大多数情况下会导致崩溃
比较诡异,c++可以显示调用析构函数,比如A a;a.~A,但是不能显式调用构造函数
并且,编译器会在对象生命周期结束时,自动调用构造函数
利用定位new表达式可以显示调用构造函数,定位new就这一个用途
首先new operator 和 operator new不一样,不清楚的百度一下
operator new是一个可以用户重载的函数,负责开辟空间(不负责初始化、调用构造函数)
全局operator new一般默认调用malloca开辟空间,全局operator new不应该被重载
编译器在new class()的时候会自动调用重载的operator new,分配空间
这是一种特别优雅的做法,应用于大规模库比如MFC
operator new重载有一些规定,自己百度
c++标准保证了new operator的行为 :先分配内存,然后初始化
new的时候,本质上先调用operator new分配内存,然后再调用构造函数
标签:编译器 oca 运算 情况下 null 野指针 一个 free let
原文地址:https://www.cnblogs.com/XDU-mzb/p/14852289.html