Мы теряем данные в буфере после realloc'ing?
У меня проблемы с пониманием, как работает realloc. Если я неправильно выделил буфер и скопировал данные в этот буфер, скажем, «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);
}