我有以下问题:
当我使用std :: vector和内置函数时,我没有得到内存,但如果我使用类,我会得到内存泄漏.为了显示:
//No leak
std::vector<double>* vecPtr1=new std::vector<double>();
//add some elements
delete vecPtr1;
//Leaks some memory but not all
std::vector<SomeClass>* vecPtr2=new std::vector<SomeClass>();
//add some elements with vecPtr2->push_back(SomeClass());
delete vecPtr2;
Run Code Online (Sandbox Code Playgroud)
据我所知,删除应该调用std :: vector的析构函数,它应该依次调用SomeClass的析构函数 - >无泄漏.我已经投入了一些思考和测试,如果我在这样的范围内使用std :: vector会发生同样的行为:
{
std::vector<SomeClass> vector;
//add elements as before
}
//memory is still used here
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 11.10下使用gcc 4.6.1.在我的库中有什么不对,或者我对std :: vector如何破坏元素有误解?
为了澄清我的SomeClass的完整代码替换为std :: pair(是的,我知道有些部分被黑了,但它只是一个例子):
#include <iostream>
#include <vector>
#include <utility>
int main()
{
std::string inString;
std::cout<<"Started"<<std::endl;
//wait
std::cin>>inString;
{
//assign vector
std::vector<std::pair<std::string,unsigned int> > vec=std::vector<std::pair<std::string,unsigned int> …Run Code Online (Sandbox Code Playgroud)