메모리 사용량을 확인하기 위해 작업 관리자를 열면 .3MB 메모리가 사용됩니다. ptr_vector에 100,000 개의 객체를 추가하면 2.3MB의 메모리가 사용됩니다. 벡터에서 .clear()를 사용하면 메모리는 .8-.9MB로 이동합니다. 이 증가 된 메모리 사용의 원인은 무엇입니까?C++에서 boost :: ptr_vector로 메모리가 누수 됨
여기에 코드입니다 : 도움을
#include <iostream>
#include <boost/ptr_container/ptr_vector.hpp>
class T {
public:
static int nObjects;
T() {
nObjects++;
}
~T(){
nObjects--;
}
};
int T:: nObjects = 0;
int main() {
boost::ptr_vector<T> vec;
char pause;
std::cout << "Press any key to continue: ";
std::cin >> pause;
for(int i=0; i<100000; i++) {
vec.push_back(new T);
}
std::cout << T::nObjects << " objects created." << std::endl;
std::cout << "Press any key to continue: ";
std::cin >> pause;
vec.clear();
std::cout << T::nObjects << std::endl;
std::cout << "Press any key to exit: ";
std::cin >> pause;
return 0;
}
감사합니다.
대단히 감사합니다! 이는 증가 된 메모리 사용량의 대부분을 차지합니다. 여분의 비트는 아마 요하네스의 메모리 페이지 유지에 대한 답변 때문일 것입니다. – Erik