Suby 님이 쓰신 글 :
: vector에 push_back해서 구조체를 쌓아 뒀는데요
:
: clear하니까 메모리가 줄어들지 않더라구요
:
: clear하고 데이터를 추가하면 할수록 계속 메모리가 쌓이는데
:
: 아무문제 없는건가요?
예, 원래가 그런 겁니다. clear()나 erase()를 사용하면 논리적인 크기(size)만 줄어들 뿐,
벡터를 위해 예약된 메모리의 물리적인 용량(capacity)는 줄어들지 않습니다.
이와 같이 clear()나 erase() 실행 후,
"수축시켜 맞추기(shrink to fit)"하기 위해서는 다음과 같이 하면 됩니다.
class Sample;
위와 같은 클래스가 있고,
vector<Sample> v;
라는 벡터가 있을 때,
clear()나 erase() 수행 후, 수축시켜 맞추려면,
vector<Sample>().swap(v);
라는 코드를 실행하면 됩니다. 간단하죠?
왜 이렇게 되는지에 대한 자세한 설명은 Effective STL 책을 참고하세요.
: Application minimize하면 메모리는 줄어들긴하는데,..
:
: 글구 Codeguard 해놓고 있으면
:
: 0x00000000 8byte에 엑세스 됬다고 계속 걸리는게 무슨 문제가 있나요
자세한 것은 저도 정확히는 모르겠고요,
코드가드나 바운즈 체커등의 범위 검사 프로그램이
STLport(빌더6에 포함된 SGI STL 배포판)를 사용한 코드에
메모리 누수가 난다고 경고하는 경우가 있는데,
이것은 STLport의 버그가 아닙니다.
자세한 것은 SGI STL의 FAQ을 참고하세요.
http://www.sgi.com/tech/stl/FAQ.html
(맨 마지막에 있습니다.)
: 모듈화 시킬려고 하다보니까 Unit를 만들어서 Vector 안에 구조체 정보를 끌어서 쓰거든요?
:
: 효율적으로 사용할려면 어떻게 해야 할까요
이 말은 무슨 뜻인지?