【发布时间】:2015-05-21 13:11:07
【问题描述】:
为什么在 c++ 中使用 malloc 和 free 时不调用构造函数/析构函数,而在使用 new 和 delete 时调用构造函数/析构函数?为什么会这样?
【问题讨论】:
-
是什么让你想到构造函数应该在
malloc中调用? -
malloc怎么会知道调用什么构造函数?不用管什么参数来传递它。
标签: c++
为什么在 c++ 中使用 malloc 和 free 时不调用构造函数/析构函数,而在使用 new 和 delete 时调用构造函数/析构函数?为什么会这样?
【问题讨论】:
malloc中调用?
malloc 怎么会知道调用什么构造函数?不用管什么参数来传递它。
标签: c++
malloc 和free 纯粹是内存管理 函数,它们对类一无所知(并且早在C++ 之前就存在了)。它们是低级内存操作。
C++ 向 C 中添加了类,并且作为该过程的一部分,添加了 new 和 delete 以创建和销毁类的实例。这与低级内存管理不同。
【讨论】:
new。
malloc 是一个早于构造函数的 C 函数。 free 是一个早于析构函数的 C 函数。它们都是 C 函数,必须在没有构造函数和析构函数的语言中运行。
【讨论】: