当定义了一个指针数组,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去释放内存