删除类指针不释放内存

时间:2014-01-25 10:23:36

标签: c++ class pointers delete-operator

我在文件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来说呢?如何正确删除?

0 个答案:

没有答案