用realloc缩小

前端之家收集整理的这篇文章主要介绍了用realloc缩小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 this question中遇到了这段小代码,&想知道,

当指向的内存空间缩小时,realloc()函数是否可以将内存块移动到另一个位置?

int * a = malloc( 10*sizeof(int) );
int * b = realloc( a,5*sizeof(int) );

如果可能的话,在什么条件下,我可以期望b的地址与a中的地址不同吗?

解决方法

realloc可以在任何调用上移动内存.在许多实现中,收缩只会导致堆中保留大小的更改,并且不会移动内存.然而,在针对低碎片进行优化的堆中,它可以选择将存储器移动到更合适的位置.

对于任何操作,不要依赖realloc保持内存在同一个地方.

猜你在找的C&C++相关文章