C++ C++;还有一个内存泄漏问题

C++ C++;还有一个内存泄漏问题,c++,memory-leaks,C++,Memory Leaks,如果我有以下课程: class SimpleContainer { private: std::vector<int> vec_; public: void set_vec(std::vector<int>* vec) { vec_ = *vec; } SimpleContainer(){} ~SimpleContainer(){} }; 类SimpleContainer{ 私人: std::向量向量向量;

如果我有以下课程:

class SimpleContainer {
private:
    std::vector<int> vec_;

public:
    void set_vec(std::vector<int>* vec) { 
        vec_ = *vec;
    }

    SimpleContainer(){}
    ~SimpleContainer(){}
};
类SimpleContainer{
私人:
std::向量向量向量;
公众:
void set_vec(std::vector*vec){
向量=向量;
}
SimpleContainer(){}
~SimpleContainer(){}
};
然后做一些类似的事情:

int main() {
    std::vector<int>* vec = new std::vector<int>();
    SimpleContainer* sc = new SimpleContainer();
    sc->set_vec(vec);

    delete sc;
}
intmain(){
std::vector*vec=新的std::vector();
SimpleContainer*sc=新的SimpleContainer();
sc->set_vec(vec);
删除sc;
}
vec泄漏了吗?还是由SimpleContainer的析构函数自动清理?假设我只调用set_vec一次

vec泄漏了吗

对。在代码中没有对
删除
的调用(对于
向量*
)。每一个新的
都需要与一个
delete
配对

实际上没有理由在这里有任何指针。同样的行为可以通过以下方式实现:

void set_vec(const std::vector<int>& vec) { 
    vec_ = vec;
}

SimpleContainer sc;
sec.set_vec({});
void set_vec(const std::vector&vec){
向量=向量;
}
SimpleContainer sc;
第集向量({});

是。当您
vec_=*vec
时,您正在制作一个副本,因此原始文件仍然会泄漏。为什么您自己管理动态分配的内存,并抱怨泄漏?使用客户提供的服务