代码之家  ›  专栏  ›  技术社区  ›  Vijay

新建、删除、malloc和free

  •  13
  • Vijay  · 技术社区  · 15 年前

    这个问题是在一次采访中问我的:

    在C++中,

    1. malloc 使用 delete
    2. 如果我们使用 new 并使用 free

    我的回答是没有区别。我这么说对吗?

    2 回复  |  直到 11 年前
        1
  •  14
  •   sharptooth    15 年前

    如果你这样做,你会遇到未定义的行为。千万别那么做。尽管 new malloc() delete 可以通过 free() 不能保证它们真的是这样实施的 新的 删除 他可以自行决定。您可能会遇到堆损坏。

    除此之外别忘了你打电话的时候 你得到原始内存-没有构造函数被调用-当你调用 免费() 不调用析构函数。这也会导致未定义的行为和程序的不正常运行。

    底线是。。。千万不要这样做。

        2
  •  1
  •   Goz    15 年前

    1) 未定义的行为,但可能会“工作”虽然。解构函数将在释放pobably不想解构的内存时被调用。
    2) 未定义的行为,但可能会“工作”虽然。不会调用析构函数。