Wie aktualisiere ich andere Zeiger, wenn Realloc den Speicherblock verschiebt?

In der Realloc-Referenz heißt es:

Die Funktion kann den Speicherblock an einen neuen Ort verschieben. In diesem Fall wird der neue Ort zurückgegeben.

Bedeutet das, wenn ich das tue:

void foo() {

        void* ptr = malloc( 1024 );

        unsigned char* cptr = ( unsigned char* )ptr+256;

        ptr = realloc( ptr, 4096 );
}

kann cptr dann ungültig werden, wenn realloc den Block verschiebt?

Wenn ja, signalisiert Realloc dann in irgendeiner Weise, dass es den Block verschiebt, damit ich etwas tun kann, um zu verhindern, dass cptr ungültig wird?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage