能否安全地在c++类的构造函数中使用malloc并使用new来创建该对象的实例?我知道在正常情况下将两者串联使用是不安全的,但在这种情况下可能/安全吗?
-
是的,你可以,但你应该有一个强有力的理由。
new
操作符调用的构造函数在很多方面与普通的class
方法类似。您还应该将free()
部分添加到析构函数中。但请注意,如果您
malloc()
一个c++对象,该对象的构造函数将不会被调用。我认为在c++程序中调用malloc()
的原因很少:您可能希望稍后调用realloc()
,这是一个原因。但是你也可以使用原生c++对象,比如stl容器。 -
在c++程序中使用两种分配内存的方式并不是不安全的,你只需要小心不要先
再一次,你能做的最危险的事情是malloc()
然后delete
或者new
然后free()
。但是对于malloc()
,你总是要小心很多事情,比如它返回NULL
和free()
分配的内存,所以它不是一个额外的事情。malloc()
一个c++对象。因为我已经说过,构造函数不会被调用。