[STL]메모리 해제에 관해서..
글쓴이: assa / 작성시간: 월, 2005/08/08 - 6:21오후
STL을 사용하면 동적으로 메모리를 할당하지 않은 이상,
굳이 메모리해제를 임의적으로 할 필요는 없다고 하는데요.
메모리 해제를 꼭 임의적으로 해야만 하는 경우는 어떻게 하나요?
예로
vector< int > tvector; for(){ tvector에 자료를 집어 넣음 } // 작업도중 tvector에 할당된 메모리를 삭제하고 싶다. tvector.~vector<int>(); // 에러
할당된 메모리를 강제로 제거하려면 어떻게 하나요?
Forums:
[code:1]typedef vector< int > tvec
동적으로 할당받아서 해제하시면 될 것 같은데요? 단일 함수 안이라면 다음과 같이 하시면 편합니다.
만약 인자값으로 전달하거나 클래스의 멤버로 사용된다면 boost::shared_ptr 을 사용하시는 것도 좋겠습니다.
소멸자를 명시적으로 호출하는 것은 custom allocator나 pla
소멸자를 명시적으로 호출하는 것은 custom allocator나 placement new 같은
특별한 경우에만 쓰는 것이라서 보통은 그렇게 하지 않습니다. (그렇게 해서도 안됩니다.)
질문의 의도를 제가 이해한 바로는 스택에 생성한 vector가 내부적으로 할당한
메모리를 임의로 해제하는 방법을 묻는 것이 아닌가 싶은데, 그렇다면 보통 이렇게 합니다.
임시 vector 개체를 생성한 다음 v와 바꿔치기한 후, 임시 개체가 소멸되면서 v가
할당했던 메모리를 해제하는 것입니다. 엄밀히 말하면 표준에서 보장하는 것은
아닙니다만 대부분의 구현에서는 의도대로 작동할 것입니다.
댓글 달기