在使用C malloc的c++构造函数中使用new



能否安全地在c++类的构造函数中使用malloc并使用new来创建该对象的实例?我知道在正常情况下将两者串联使用是不安全的,但在这种情况下可能/安全吗?

  1. 是的,你可以,但你应该有一个强有力的理由。new操作符调用的构造函数在很多方面与普通的class方法类似。您还应该将free()部分添加到析构函数中。

    但请注意,如果您malloc()一个c++对象,该对象的构造函数将不会被调用。我认为在c++程序中调用malloc()的原因很少:您可能希望稍后调用realloc(),这是一个原因。但是你也可以使用原生c++对象,比如stl容器。

  2. 在c++程序中使用两种分配内存的方式并不是不安全的,你只需要小心不要先malloc()然后delete或者new然后free()。但是对于malloc(),你总是要小心很多事情,比如它返回NULLfree()分配的内存,所以它不是一个额外的事情。

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

相关内容

  • 没有找到相关文章

最新更新