delete 指针数组

当定义了一个指针数组,int *p[10],这个表示的是一个指针的数组,使用new给p数组赋值

for(int i=0;i<10;i++)

{

  p[i]=new int(i);

}

使用delete释放内存

for(int i=0;i<10;i++)

{

  if(p[i] != nullptr)

  {

    delete p[i];

    p[i]=nullprt;

  }

}

此时我想到同时将p的内存释放,当delete p时,编译会报错,也一直没有找到问题的原因.

if(p!=NULL)

{

  delete p;

}

后来在CSDN上找到了问题所在,原来int* p[10],指针数组,这个p[10]数组里的元素是指针,赋值时是用new的方式,而p本身只是一个数组,内存分配在栈上的,当然不能用delete去释放内存 

原文地址:https://www.cnblogs.com/racefly-20200615/p/13129385.html