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()没有调用析构函数.这也可能导致程序未定义的行为和不正常的运行.
底线是......永远不要这样做.