C++中,动态内存的管理通过一对运算符来完成:
new:在动态内存中为对象分配空间并返回一个指向该对象得指针
delete:接受一个动态对象的指针,销毁该对象,并释放与之关联的内存
说明:new申请的内存位于堆,返回的指针变量通常是局部变量,位于栈;
new与delete在底层通过 malloc() 与 free() 实现内存分配与释放
Problem:
1.忘记释放内存:造成内存泄漏
2.提前释放内存:产生引用非法内存的指针
3.delete两次
样例如下:pi 正常分配与释放,pi2 忘记释放, pi3提前释放
int *pi = new int(5);cout << *pi << endl;delete pi;
pi=0;int *pi2 = new int(5);cout << *pi2 << endl;int *pi3 = new int(5);delete pi3;
pi3=0;cout << *pi3 << endl;