Здравствуйте. У меня возник вопрос по поводу выделения/очистки памяти в программе. Сначала грешил на утечки, но сейчас сомневаюсь, может быть я не понимаю особенностей работы с памятью. Вот набросал небольшой примерчик:
#include <iostream>
#include <vector>
class A {
public:
A();
~A();
long int *n;
};
A::A(){
n = new long int [1000];
}
A::~A(){
delete [] n;
}
int main(int argc, char** argv){
std::vector <A*> v;
char c;
std::cout << "Start\n";
std::cin >> c;
std::cout << "Creating items\n";
for (int i=0; i< 1000; i++){
A* a = new A();
v.push_back(a);
}
std::cout << "Items created\n";
std::cin >> c;
std::cout << "Deleting\n";
for (int i = 0; i < v.size(); i++){
delete v[i];
v[i] = NULL;
}
v.clear();
std::cout << "Items deleted\n";
std::cin >> c;
return 0;
};
После запуска программы вызываю pmap:
mapped: 2836K writeable/private: 168K
После заполнения вектора:
mapped: 6796K writeable/private: 4128K
После очищения вектора:
mapped: 6796K writeable/private: 4128K
Почему память не освободилась? Если вопрос нубский, прошу дать ссылку, что почитать на эту тему.