new,delete,malloc&free

Vij*_*jay 13 c++ malloc free memory-management new-operator

我在接受采访时问过这个问题:

在C++中,

  1. 如果我们分配内存malloc并使用它delete来释放分配的内存怎么办?
  2. 如果我们使用new并使用它来释放内存free怎么办?

如果在代码中使用上述内容,我们将面临哪些问题?

我的回答是没有区别.这样说我是对的吗?

sha*_*oth 14

如果这样做,您将遇到未定义的行为.永远不要试试.虽然new可能是通过实施malloc()delete可能实施的通过free()没有保证他们真正实现这种方式,并同时用户可以超载new,并delete在他的自由裁量权.您可能会遇到堆损坏.

除此之外不要忘记,当你打电话给malloc()你时,你得到原始内存 - 没有调用构造函数 - 当你调用时free()没有调用析构函数.这也可能导致程序未定义的行为和不正常的运行.

底线是......永远不要这样做.