通过realloc的方式确实能够改变原数组的尺寸。给用户的感受,就好像我的数组根据要求扩大或缩小了一样。然而,底层实现可以知道,我们要分情况讨论:
就拿扩大来说,并不是在原数组的地址空间基础上,继续往后按照我们的意愿去扩展。因为,我们并不能保证拟扩展的地址空间上,是否有其他程序已经先行占用了?如果拟扩展地址空间上没有占用,那么后续扩展的内容调整后的内存空间和原来的内存空间,保持同一内存始址。否则,程序会在内存的堆区重新找一块空闲的地址空间,并返回新的内存始址。所以,realloc返回的指针很可能指向一个新的地址。
故,以上是我的理解。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3858.html