您可以安全地在C ++类的构造函数中使用malloc并使用new创建该对象的实例吗?我知道在正常情况下将两者同时使用是不安全的,但是在这种情况下是否可能/安全?
是的,您可以,但是您应该有充分的理由。该new
运营商调用构造函数,在许多方面就像一个普通class
的方法。您还应该将free()
零件添加到析构函数。
但是请注意,如果您使用的malloc()
是c ++对象,则不会调用该对象的构造函数。我认为malloc()
在c ++程序中调用的原因很少:您可能希望realloc()
稍后再讲,这是原因之一。但是您始终可以使用本机c ++对象,例如stl容器。
这不是不安全的使用在分配内存的两种方式的C ++程序,你就必须要小心,不要malloc()
的东西,然后delete
它或new
东西,然后free()
它。但是对于malloc()
您而言,始终必须小心许多事情,例如返回NULL
和free()
分配已分配的内存,因此这不是多余的事情。
再次,你能做的最危险的事情是malloc()
一个C ++对象。因为正如我已经说过的,构造函数将不会被调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句