简述malloc 申请的存储空间能用 delete 释放吗 ?
参考答案:
在C++中,malloc
和delete
是两种不同的内存管理函数,分别属于C和C++标准库。它们不能交叉使用来分配和释放内存。
malloc
是C标准库函数,用于在堆上分配内存。它返回一个指向分配的内存块的指针,或者如果内存分配失败,则返回NULL
。使用malloc
分配的内存应使用free
函数来释放。delete
是C++操作符,用于释放通过new
操作符分配的内存。new
不仅分配内存,还会调用对象的构造函数。相应地,delete
不仅会释放内存,还会调用对象的析构函数。
如果你尝试使用delete
来释放通过malloc
分配的内存,或者使用free
来释放通过new
分配的内存,可能会导致未定义的行为,包括程序崩溃、内存泄漏或其他难以追踪的错误。
因此,简而言之,malloc
申请的存储空间不能用delete
释放,而应该使用free
来释放。同样地,new
申请的存储空间应该用delete
来释放。