使用新的C++构造函数使用C malloc

bra*_*411 3 c c++ memory malloc new-operator

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

Iha*_*imi 7

  1. 是的,你可以,但你应该有充分的理由.该new运营商调用构造函数,在许多方面就像一个普通class的方法.您还应该将该free()部件添加到析构函数中.

    但请注意,如果您malloc()对象,则不会调用该对象的构造函数.我认为malloc()程序中调用的原因很少:你可能希望realloc()稍后,这是一个原因.但是你总是可以使用本机对象,比如容器.

  2. 使用在程序中分配内存的两种方式并不是不安全的,你只需要注意不要做malloc()某些东西,然后再做delete它或new什么然后free()它.但是malloc()你总是要小心许多事情,比如它返回NULLfree()分配的内存,所以这不是一件额外的事情.

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