动态内存(一)

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;

猜你喜欢

转载自www.cnblogs.com/hzk-note/p/9589969.html