반응형
vector를 사용한 뒤 메모리를 해제해주기위해 보통 clear함수를 많이 호출한다. 그러나 clear함수는 vector에 저장된 값들은 제거되지만 vector에 할당 된 메모리는 삭제되지 않는다.
아래의 예를 보면 clear 함수 호출 후에도 capacity값이 남아 있음을 볼 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
vector<int> vt;
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.clear();
cout<< "vector capacity : " << vt.capacity() <<endl;
return 0;
}
|
cs |
실행결과
vector capacity : 8
(값이 8인 이유는 vector의 메모리 할당 정책 때문)
따라서 완벽하게 메모리를 정리해 주기 위해서는 아래의 방법처럼 swap함수를 이용하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
vector<int> vt;
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.push_back(10);
vt.clear();
cout<< "vector capacity : " << vt.capacity() <<endl;
vector<int>().swap(vt);
cout<< "after swap vector capacity : " << vt.capacity() <<endl;
return 0;
}
|
cs |
실행결과
vector capacity : 8
after swap vector capacity : 0
반응형
'C and C++' 카테고리의 다른 글
[C++] 싱글톤 생성 팁 (0) | 2022.08.15 |
---|---|
[C/C++] for문에서 전위증가 후위증가 차이점 (0) | 2021.02.06 |
[C++][STL] vector for문 올바로 사용하기 (0) | 2021.02.06 |
[C] C에서 생성자 소멸자 흉내기 (0) | 2020.10.11 |
[C++][STL] STL을 활용하여 상한값 하한값 단순화 (0) | 2020.05.03 |