로컬 시간과 UTC 시간, 두가지 시간 모두 필요해서
localtime 함수와 gmtime 함수를 사용할 일이 있었다.
멋모르고 사용하다가 삽질할 뻔했지만
다행이도 금방 눈에 띄였기에.
이렇게 작성해서 실행해보면 localtime과 gmtime 출력 결과가 똑같이 출력된다.
비정상 출력이다. (system timezone이 한국이라면 9시간 차이가 나야 정상이다.)
곰곰히 생각하다가 소스를 처음부터 다시 살펴봤더니
localtime이나 gmtime이 시간을 똑같이 출력하는 건 차치하더라도
일단 localtime과 gmtime의 리턴값은 struct tm* 변수를 리턴한다.
하지만 우리는 tm 구조체 포인터 변수를 리턴값으로 받으면서도 delete를 한적이 없다.
하라는 설명을 본적도 없었고.
어떻게 가능하지 싶다가 아차! 싶었던 것이 static 전역 변수썼을 것이고
왜인지 localtime과 gmtime이 같은 전역 변수를 사용할 것 같아 주소를 출력해봤더니.. 역시나..
올바르게 사용하려면 메모리 copy를 하던지
아니면 그냥 순차적으로 사용하던지. :3
ㅋㅋㅋㅋ
사실.. localtime과 gmtime 사용법을 설명한 페이지( http://www.cplusplus.com/localtime ) 의
return value항목에서는 내부 객체를 가르키는 포인터의 값과 유효성이
localtime함수나 gmtime함수를 호출하면서 변경될 수있다고 적어놨다....
좀 꼼꼼히 읽어 볼껄.........
* OSX > XCODE에서는 이런 현상이 발생되지않는다.
* Visual Studio 2013과 우분투에서는 위의 설명과 같다.
* 참고 사이트
- http://www.cplusplus.com/localtime
- http://www.cplusplus.com/reference/ctime/gmtime/
'Programming > Programming' 카테고리의 다른 글
Windows에서 Github Page와 Jekyll로 블로그 생성하기. (11) | 2017.02.02 |
---|---|
기본적으로 사용하는 vimrc 설정들. (0) | 2016.07.04 |
ioi 갤러리(청하)를 긁는 크롤러(crawler)를 만들면서 배우고 느낀 것들 (0) | 2016.05.16 |
카카오 톡에서 전기요금 청구서 받기. (0) | 2016.04.02 |
[Cocoa/Obj-C] NSPopUpButton 에는 addObserver를 할 수 없다.. 아니 해선 안된다.. (0) | 2016.02.24 |
[cocos2d] Sprite Animation 두번째 (0) | 2013.09.28 |
[cocos2d] Sprite Animation (0) | 2013.09.20 |
[Sikuli Script] 설치(Windows) 및 Hello World. (0) | 2013.04.30 |