void log(){
time_t current = time(0);
tm *ptm = localtime(¤t);
stuf...
}
그냥 확실하길 원한다 - 메소드 끝 부분에 할당 된 메모리 포인터를 해제해야합니까?localtime에 대한 메모리를 할당 해제해야합니까?
void log(){
time_t current = time(0);
tm *ptm = localtime(¤t);
stuf...
}
그냥 확실하길 원한다 - 메소드 끝 부분에 할당 된 메모리 포인터를 해제해야합니까?localtime에 대한 메모리를 할당 해제해야합니까?
아니요 할당을 취소하면 안됩니다. 구조체가 정적으로 할당됩니다.
확인 documentation : 정적 내부 std::tm
객체, 그렇지 않으면 성공, 또는 NULL
-
포인터
반환 값. 구조는
std::gmtime
,std::localtime
및std::ctime
사이에서 공유 될 수 있으며 각 호출시 겹쳐 쓸 수 있습니다.
정적으로 할당된다는 것은 무엇을 의미합니까? 로컬 시간 구현에 의해 힙에 할당 된 dosnt? –
@ user1495181 : 참조가 추가되었습니다. –
/should// should//하지 않아야합니다/ –
아니요, 아니요. 이 구조체는 정적으로 할당되고 함수 gmtime
및 localtime
에 의해 공유됩니다. 이 함수 중 하나가 호출 될 때마다이 구조의 내용을 덮어 씁니다.
결과에주의하십시오. 예 : 즉시 복사하고 포인터를 저장하지 마십시오.
가능한 복제본 [로컬 시간의 결과 구조체는 C에서 어떻게 할당 되었습니까?] (http://stackoverflow.com/questions/8694365/how-is-the-result-struct-of-localtime-allocated-in- c) – user
[프로젝트를 프로파일 링 할 때 dyld 및 localtime 누수를 해결하는 방법?] (http://stackoverflow.com/q/10105181) – jww