Ссылка перераспределить говорит:Как обновить другие указатели, когда realloc перемещает блок памяти?
Функция может перемещать блок памяти на новое место, и в этом случае новое место возвращается.
Означает ли это, что если я это сделать:
void foo() {
void* ptr = malloc(1024);
unsigned char* cptr = (unsigned char*)ptr+256;
ptr = realloc(ptr, 4096);
}
тогда CPTR может стать недействительным, если перераспределить перемещает блок?
Если да, то каким-либо образом передается сигнал realloc, чтобы он перемещал блок, чтобы я мог что-то сделать, чтобы cptr не стал недействительным?
Это хороший вопрос +1 от меня, поскольку он подчеркивает фундаментальную кривую обучения, включающую realloc ... – t0mm13b