加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用带有C malloc的C构造函数的new

发布时间:2020-12-16 10:03:47 所属栏目:百科 来源:网络整理
导读:你能安全地在C类的构造函数中使用malloc并使用new来创建该对象的实例吗?我知道在正常情况下将两者串联使用是不安全的,但在这种情况下是否可行/安全? 解决方法 是的,你可以,但你应该有充分的理由. new运算符调用构造函数,它在很多方面就像常规类方法一样.您
你能安全地在C类的构造函数中使用malloc并使用new来创建该对象的实例吗?我知道在正常情况下将两者串联使用是不安全的,但在这种情况下是否可行/安全?

解决方法

>是的,你可以,但你应该有充分的理由. new运算符调用构造函数,它在很多方面就像常规类方法一样.您还应该将free()部分添加到析构函数中.

但是请注意,如果你使用malloc()一个c++对象,那么该对象的构造函数将不会被调用.我认为在c++程序中调用malloc()的原因很少:你可能希望稍后重新分配(),这是一个原因.但您始终可以使用stl容器等本机c++对象.
>使用在c++程序中分配内存的两种方式并不是不安全的,你只需要小心不要使用malloc()某些东西,然后删除它或新的东西然后free()它.但是对于malloc(),你总是要小心许多事情,比如返回NULL和free()分配的内存,所以这不是额外的事情.

再一次,你可以做的最危险的事情是malloc()一个c++对象.因为正如我已经说过的,不会调用构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读