C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[28770] [질문] 코드가드와 localtime() 함수.
레인싱어 [rainsinger] 1472 읽음    2004-02-10 19:26
codeguard.jpg 80.7KB 코드가드 에러메시지
BC++로 프로그램을 처음 짜는 초보 개발자입니다. 작성중인 프로그램에서
localtime() 함수를 통해서 현재 시각을 뽑아내고 있습니다. 코드를
간략하게 적어보면 이렇습니다.

cmdo_time_t cmdo_gettimeofday(void)
{
    cmdo_time_t cur_time;
    time_t timer;
    struct tm *tblock;

    timer = time(NULL);
    tblock = localtime(&timer);

    /* 처리하는 부분입니다. */
    cur_time.year   = (WORD)(tblock->tm_year + 1900);
    cur_time.month  = (BYTE)(tblock->tm_mon + 1);
    cur_time.day    = (BYTE)(tblock->tm_mday);
    cur_time.hour   = (BYTE)(tblock->tm_hour);
    cur_time.min    = (BYTE)(tblock->tm_min);
    cur_time.sec    = (BYTE)(tblock->tm_sec);
    /* 처리하는 부분 끝 */

    return cur_time;
}

저는 localtime() 함수는 내부적으로 tm struct를 static으로 선언해서 내부에
가지고 있고, 호출될때마다 그 내용에 덮어쓴 다음 tm struct의 포인터를 리턴해준다고
알고 있었습니다. 그런데 이 코드를 추가한 이후, "프로그램을 종료시킬때면"
항상 코드가드가 에러를 잡아냅니다. 에러의 내용은 첨부파일과 같습니다.

즉 첨부파일에서 보시는 것과 같이, 아마도 내부적으로 BC++5.0은 localtime() 함수
안에서 첫번째 요청에 malloc()을 이용해서 메모리를 잡아 두는 것 같습니다. (당연히
localtime() 호출 후 free(tblock)을 하면 또 다른 에러를 발생시킵니다.) 그래서
프로그램이 종료될때 메모리 공간을 free하다가 이 부분을 에러로 찾아내는 것 같은데...

가만두자니 찜찜하고, 혼자서는 해결방법이 없어 이렇게 질문을 올려 놓습니다. 이런
문제를 경험하신 고수분들의 조언을 기다립니다.




+ -

관련 글 리스트
28770 [질문] 코드가드와 localtime() 함수. 레인싱어 1472 2004/02/10
34448     Re:[질문] 코드가드와 localtime() 함수. 레인싱어 944 2004/02/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.