问题:所谓多次删除问题指的是什么?
应该是指多次delete从堆中分配的内存的指针吧。 比如: int *p=new int; delete p; delete p;//这里就是多次删除指向堆中的内存的指针p。上一句代码已经释放了在堆中分配的sizeof(int)大小的、由p保存着首地址的内存,但p此时仍保存着这块内存的地址,再一次删除这块已经不属于你的内存(通俗地讲就是这个意思)就会发生不可预料的后果。所以一般地,在执行完delete *p;后,应该将p值为0。 还有一种情况正如楼上所说的,用代码表示如下: int *p=new int; int *q=p; delete p; delete q;//至此之前,p指向的堆中的内存已经释放完毕,再执行本语句就会发生与上个例子一样的结果。 如果你对所谓多次删除问题指的是什么?这个问题有好的意见或
建议,请留言
|