malloc开辟的空间能否用delete释放 相对的 new开辟的空间能否用free释放
今天来 搞搞事情!!!网上说 如果这二者 相互对调配对使用的话 会出现 内存泄漏、内存释放不完全等等(http://bbs.csdn.net/topics/310145653)
今天来验证验证
初步可以看出 free()并没有把P2释放 而这只能看出 free并没有令程序调用析构函数来释放 这个也说的过去 毕竟free是C语言的
为了检验是否真的没有释放P2 我们加了一行代码 输出 P2的地址看看 是否还存在 结果可想而知。。。。
分割线==============
用上面的代码 检验 看不出啥来
咱们加入个成员 num 来观察
发现num可以被释放
#include <iostream>;
using namespace std;
class T {
public :
int num;
public:
T() { cout << "constructor" << endl; }
~T() { cout << "destructor" << endl; }
};
int main()
{
T* p1 = (T *)malloc(sizeof(T));
p1->num = 123;
cout << p1->num << endl;
delete (p1);
cout << p1->num << endl;
T* p2 = new T;
p2->num = 666;
cout << p2->num << endl;
free(p2);
cout << p2->num << endl;
system("pause");
return 0;
}
但是 实际应用中咱不能这么干 !!!
从输出的对话框可以看出 用malloc 和free 的话 不能调用到 构造函数 和析构函数
实际应用中 对象实例的时候 如果有动态内存分配的话 那就扎心了 老铁
所以说 该是一对的就是一对 上天安排的最大嘛 hhh