我在文件testc
中有一个班级main.cpp
。我使用htop
控制内存使用情况。编译器是g ++。操作系统是Debian。我没有使用任何特定的编译选项:
g++ main.cpp -o main
#include <vector>
#include <set>
#include <sstream>
#include <iostream>
#include <stdio.h>
using namespace std;
class testc
{
public:
vector <int> i;
string str;
//set <int> si;
testc(){};
~testc() {};
};
int main() {
testc* testc_ptr = new testc();
cout<<"before filling"<<endl;
getchar();
for (int c=0; c< 1024*1024*10;c++) {
testc_ptr->i.push_back(c);
//testc_ptr->si.insert(c);
}
testc_ptr->str="some string";
cout<<"after filling"<<endl;
getchar();
delete(testc_ptr);
cout<<"after deletion"<<endl;
getchar();
return 1;
};
完美无缺。它释放分配给类的所有内存。但是当我取消注释评论的行对应于集合时,我遇到了问题。
在填写htop
之前显示VIRT:2988,RES:908。
填充后htop
显示VIRT:306M,RES:280M。
删除后htop
显示VIRT:242M,RES:240M。
为什么没有删除为集合si
分配的内存,但是对于vector来说呢?如何正确删除?