【发布时间】:2011-03-12 04:16:50
【问题描述】:
在一次采访中问我这个问题:
在 C++ 中,
- 如果我们使用
malloc分配内存并使用delete释放分配的内存会怎样?- 如果我们使用
new分配内存并使用free释放它会怎样?如果在代码中使用上面的东西,我们会遇到什么问题?
我的回答是没有区别。我说的对吗?
【问题讨论】:
-
这个FAQ 回答了这些确切的问题。
-
希望您对其他问题的回答正确
-
“没有区别。” -> 这在技术上是正确的,这两点都会导致未定义的行为,所以没有区别:)
-
因为这是一个面试问题,我不认为他们期望是/否的答案。您应该解释 malloc/free 和 new/delete 的作用、它们有何不同、如何使用它们以及为什么不应该混合使用它们。这将向他们展示您了解 C++ 和 C++ 运行时的工作原理,它与 C 标准库的关系,并且您可以考虑这些问题。因此,用“回答 [...] 没有区别”回答您的问题,您失败了。 :-(
标签: c++ memory-management malloc free new-operator