c++释放内存
为什么p指针释放的时候要自加?(p指的是数组)
为什么p指针释放的时候要自加?(p指的是数组)
2017-03-04
首先,p指针释放并不需要自加,因为delete[]这个就表示要释放一段连续的内存,如果还要挨个释放,
那么跟直接delete有什么区别;
其次我再解释一下为什么p要++之后再释放,请注意上面那个使用到p的循环,每次循环都自减;
p先是指向第三个元素,然后
第一次循环,将第三个元素打印,然后p自减,变为指向第二个元素;
第二次循环,将第二个元素打印,然后p自减,变为指向第一个元素;
第三次循环,将第一个元素打印,然后p自减,变为指向第一个元素地址的再上一个;
这时,p的地址并不是我们先前申请的那块连续地址的首地址,而我们delete[]必需要首地址,
此时p自加(注意一个细节,只自加了一次,而并非是循环自加),重新指向那块连续地址的首地址,
这时便可以对p进行合法的释放。
如果还有我没解释清楚的地方或者还有想要了解的地方,欢迎提问!!!
举报