realloc リファレンスには次のように書かれています。
この関数はメモリ ブロックを新しい場所に移動する場合があり、その場合は新しい場所が返されます。
これを行うと、次のようになります。
void foo() {
void* ptr = malloc( 1024 );
unsigned char* cptr = ( unsigned char* )ptr+256;
ptr = realloc( ptr, 4096 );
}
realloc がブロックを移動すると、cptr が無効になる可能性がありますか?
はいの場合、realloc は何らかの方法でブロックを移動することを通知するので、cptr が無効になるのを防ぐために何かを行うことができますか?