Vij*_*jay 13 c++ malloc free memory-management new-operator
我在接受采访时问过这个问题:
在C++中,
- 如果我们分配内存
malloc
并使用它delete
来释放分配的内存怎么办?- 如果我们使用
new
并使用它来释放内存free
怎么办?如果在代码中使用上述内容,我们将面临哪些问题?
我的回答是没有区别.这样说我是对的吗?
sha*_*oth 14
如果这样做,您将遇到未定义的行为.永远不要试试.虽然new
可能是通过实施malloc()
和delete
可能实施的通过free()
没有保证他们真正实现这种方式,并同时用户可以超载new
,并delete
在他的自由裁量权.您可能会遇到堆损坏.
除此之外不要忘记,当你打电话给malloc()
你时,你得到原始内存 - 没有调用构造函数 - 当你调用时free()
没有调用析构函数.这也可能导致程序未定义的行为和不正常的运行.
底线是......永远不要这样做.