重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
new是C++中新引入的关键字下面简单介绍一下他们两个的区别
永安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!首先看一下他们对于内置类型的区别,他们对于内置类型来说几乎只有在用法上的区别,我们可以看一下调试
这就是用new和malloc对内置类型开辟动态空间,我们基本看不出差别,那我们看一下他们对于内置类型适当有什么区别
当然对于malloc来说对应的释放是free,而对于new对应的则是delete,而delete释放一个值得时候不需要带方括号,而释放数组时需要带方括号,而且两个最好不要混着用,下面看一下他们对于内置类型释放的区别
同样是几乎没有差别
而他们对于内置类型几乎没有差别,但是他们对于自定义函数,则会有不同
首先看一下我们的自定义类型
这时候我们分别用malloc和new对内置类型开辟空间,我们看一下差别
同样是分别开辟一个和开辟五个
我们调试过以后可以明显看到,new和malloc开辟空间后,new出来的空间明显被初始化后的,因为new开辟自定义空间会调用自定义函数的默认构造函数,而malloc则不会调用
下面看一下释放空间
在这里我们确实看不出什么,但是delete会调用自定义函数的默认析构函数,我们可以看一下
这是我通过自己实现默认构造函数,通过打印出来显示的
这就是他们初始化的区别,我们在看一下关于new的初始化
关于new的初始化,只开辟一个空间的话,可以用园括号开初始化里面的值,但是开辟数组的话,在C++98里面是不支持new数组的初始化的,但是在C++11里面支持上面显示的初始化
我们可以看到初始化后的值
这个就是new和malloc的区别
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧