realloc의 작동 방식을 이해하는 데 어려움을 겪고 있습니다. 내가 버퍼를 malloc으로 할당하고 그 버퍼에 데이터를 복사 한 경우의는 "AB"를 가정 해 봅시다 : reallocing 후 버퍼의 데이터가 손실됩니까?
+------------+
| A | B | \0 |
+------------+
다음 내가 버퍼를 realloc'ed, 데이터 (심지어 단일 바이트)에서 길을 잃었 어떤이 될 것인가? ; 아니면 단지 버퍼를 확장합니까? :
+------------------------+
| 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);
}
가 왜'= realloc을 (버퍼, newSize와)을 버퍼링 할 수없는 잘못,'? –
이유는 대답 –
에 설명되어 있습니다. 그렇기 때문에 데이터 손실을 방지하려면 먼저 할당이 성공적인지 확인한 다음 다시 할당하십시오. 감사합니다. –