为什么malloc不能配对delete使用以及new不能配对free使用
时间: 2023-12-31 22:07:05 浏览: 119
内存管理中malloc和free的奥秘
这是因为在C++中,new和delete是动态内存管理的运算符,它们配对使用可以确保内存的正确分配和释放。同样,malloc和free也是动态内存管理的函数。但是,new和malloc以及delete和free并不是相互兼容的,因为它们在内部执行的操作不同。
new操作符在分配内存时,会调用对象的构造函数进行初始化操作,而malloc函数只是单纯地分配内存空间,不会调用构造函数。因此,如果用malloc分配了内存,再用delete来释放内存,会导致对象的析构函数不被调用,从而造成内存泄漏或其他问题。
同样,如果用new来分配内存,再用free来释放内存,也会导致问题。因为free函数只是简单地释放内存空间,不会调用对象的析构函数,这样会导致对象无法正确地被销毁,从而导致内存泄漏或其他问题。
因此,在C++中,建议使用new和delete来进行动态内存管理,而不是malloc和free。
阅读全文