asprintf
과 realloc
을 모두 사용하는 경우 작동하지 않는 다음 코드가 있습니다.재 인쇄용 asprintf 덮어 쓰기 메모리
내가 점점 오전 오류입니다 : 내가 asprintf
를 사용할 때 realloc
사용하는 일부 메모리를 덮어처럼 보이는 연구 한 내용을 바탕으로
*** glibc detected *** a.out: realloc(): invalid old size: 0x006f1430 ***
. 이것은 asprintf
이 안전하고 적절한 문자열 길이를 사용하여 동적으로 할당되기 때문에 나에게 이해가되지 않습니다. asprintf
을 사용하지 않으면 프로그램이 제대로 실행되지만, 내 프로젝트에는 asprintf
의 기능이 필요합니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int ifCount = 1;
int stringCount = 1;
char** IFs = NULL;
//Broken code
char* message;
asprintf(&message, "Hello: %d", stringCount);
//Working code, but not the alternative I want to take
//char* message = "Hello";
IFs = (char**) realloc(IFs, sizeof(char*) * ifCount);
IFs[ifCount - 1] = (char*) realloc(IFs[ifCount - 1], sizeof(char) * strlen(message));
strcpy(IFs[ifCount - 1], message);
printf("Message: %s\n", message);
printf("Copy: %s\n", IFs[ifCount - 1]);
free(message);
}
게시물의 이름을 변경하여 여기에 답변을 올리면 질문에'(답변)'을 포함하지 마십시오. – Mike