6 c realloc dynamic-memory-allocation
我在这个问题中遇到了这段小代码,想知道,
realloc()当指向的内存空间缩小时,该函数是否可以将内存块移动到另一个位置?
int * a = malloc( 10*sizeof(int) );
int * b = realloc( a, 5*sizeof(int) );
Run Code Online (Sandbox Code Playgroud)
如果可能的话,在什么条件下,我可以期望b有一个不同于的地址a吗?
Jar*_*Par 12
可以realloc在任何呼叫上移动内存.在许多实现中,收缩只会导致堆中保留大小的更改,并且不会移动内存.然而,在针对低碎片进行优化的堆中,它可以选择将存储器移动到更合适的位置.
不要依赖于realloc将记忆保存在同一个地方进行任何操作.