2011-12-27 3 views
0

프로그램은 "This is James : 00:00:00"문자열과 시간 형식을 반환하지만 충돌합니다. 누락 된 메모리 할당이 있지만 오류가있는 곳을 고정 할 수 없다고 생각합니다.return time_t error

FREObject result = 0; 

uint32_t len = -1; 
const uint8_t *str = 0; 
char *temp; 
uint8_t *strAll; 

time_t curtime; 
struct tm *loctime; 

/* Get the current time. */ 
curtime = time(NULL); 

/* Convert it to local time representation. */ 
loctime = localtime(&curtime); 

//Turn our actionscrpt code into native code. 
if(FREGetObjectAsUTF8(argv[0], &len, &str) == FRE_OK) { 
    temp = "Hello World! This is "; 

    strAll = (char *)malloc(sizeof(temp) + sizeof(str) + sizeof(loctime)); 
    strcpy(strAll,temp); 
    strcat(strAll,str); 
    strcat(strAll,asctime(loctime)); 
} 

답변

3

당신은 아마 대신 여기 sizeofstrlen 원하는 :

strAll = (char *)malloc(sizeof(temp) + sizeof(str) + sizeof(loctime)); 

는 또한 sizeof(loctime)가 거의 의미한다. 너는 asctime(loctime)의 길이로 대체하려고 할 것입니다. 이 같은

아마 뭔가 :

char *asc = asctime(loctime); 
strAll = malloc(strlen(temp) + strlen(str) + stren(asc) + 1); 
+0

궁금하지만, 왜 작동하는지 모든 코드 대신 "를 sizeof"사용하고 있습니까? sizeof (char) * strlen (str) –

+0

@JamesONG'sizeof' 연산자는 생각했던 것과 다르게 작동합니다. 나는 600 자로 적절한 설명을 할 수 없다. 책을 읽을 필요가있다. – cnicutar

+0

확인을 읽습니다. 날짜 구조 대신 밀리 초 형식으로 시간을 출력해야합니다. 나는 여러 유형의 시간을 찾고 있는데, GCC 컴파일러가있는 Windows 7 OS에 가장 적합한 시간 기능을 제안합니까? 따라서 MIDI 타이밍을 추적해야하므로 파트 득점을 위해 밀리 초를 비교해야합니다. –