realloc函数可能会将内存块移动到新的位置,此时返回新的位置。
那么这是否意味着如果我这样做:
void foo() {
void* ptr = malloc( 1024 );
unsigned char* cptr = ( unsigned char* )ptr+256;
ptr = realloc( ptr, 4096 );
}
如果realloc移动了块,那么cptr可能会变为无效指针?
如果是这样的话,那么realloc会发出任何信号表明它将移动块,以便我可以做些什么来防止cptr失效呢?