- 老师答疑区
- 帖子详情
顺序栈【进栈算法-扩容】Bug
longyue0521
发表于2017年09月27日
<p><img src="https://nos.netease.com/edu-image/ba259266-ccf7-4fc3-a415-e088cc9fd808.png" /></p><p><br /></p><p><code class="brush:cpp;toolbar:false" >// newbase不为NULL时,有两种情况:
// 1)在S.base后面直接增加长度为STACKINCREMENT的内存空间,此时S.base == newbase
// free(S.base)后newbase就是迷途指针
// 2)S.base后无法增加空间,另找一块长度为(S.stacksize+STACKINCREMENT)的空间并将原数据拷贝到该空间
// S.base != newbase
// 综上,free(S.base)前应该做如下判断:
if( S.base != newbase) {
free(S.base)
}</code></p>
3
回复