Не теряем ли мы данные в буфере после перераспределения?

У меня проблемы с пониманием того, как работает перераспределение. Если я заблокировал буфер и скопировал данные в этот буфер, скажем «AB»:

 +------------+
 | A | B | \0 |
 +------------+

, тогда я перераспределил буфер, не будут ли потеряны данные (даже один байт) ?; или это просто расширение буфера? :

 +------------------------+
 | A | B | \0 | ? | ? | ? |
 +------------------------+

код:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void){

    char* buffer    = (char*) malloc( sizeof(char) * 3 );
    strncpy(buffer, "AB", 2);

    buffer          = (char*) realloc(buffer, sizeof(char) * 6); /* Will there be any lost here? */
    free(buffer);
    return(0);
}
33
задан Daniel Heilper 29 May 2018 в 12:34
поделиться