跳到主要内容

简述malloc 申请的存储空间能用 delete 释放吗 ?

参考答案:

在C++中,mallocdelete是两种不同的内存管理函数,分别属于C和C++标准库。它们不能交叉使用来分配和释放内存。

  • malloc是C标准库函数,用于在堆上分配内存。它返回一个指向分配的内存块的指针,或者如果内存分配失败,则返回NULL。使用malloc分配的内存应使用free函数来释放。
  • delete是C++操作符,用于释放通过new操作符分配的内存。new不仅分配内存,还会调用对象的构造函数。相应地,delete不仅会释放内存,还会调用对象的析构函数。

如果你尝试使用delete来释放通过malloc分配的内存,或者使用free来释放通过new分配的内存,可能会导致未定义的行为,包括程序崩溃、内存泄漏或其他难以追踪的错误。

因此,简而言之,malloc申请的存储空间不能用delete释放,而应该使用free来释放。同样地,new申请的存储空间应该用delete来释放。