myFunc
传递一个向量,并在函数内部向该向量添加了一些元素。目前我没有释放使用new创建的对象,请忽略由此导致的内存泄漏。
在完成
myFunc()
执行后,我会打印变量ctor和dtor以知道构造函数和析构函数被调用的次数。输出为:
Before Exiting 5 7
我正在创建5个对象,因此ctor
是5
。但是为什么dtor
是7
?从哪里来的额外两个计数?我有什么遗漏吗?
#include
#include
using namespace std;
static int ctor = 0;
static int dtor = 0;
class MyClass
{
public:
MyClass(int n)
{
i = n;
ctor++;
// cout << "Myclass ctor " << ctor << endl;
}
~MyClass()
{
dtor++;
// cout << "Myclass dtor" << dtor << endl;
}
private:
int i;
};
void myFunc(vector<MyClass> &m);
void myFunc(vector<MyClass> &m)
{
MyClass *mc;
for(int i = 0; i < 5; i++)
{
mc = new MyClass(i);
m.push_back(*mc);
}
}
int main()
{
vector<MyClass> m;
vector<MyClass>::iterator it;
myFunc(m);
cout << "Before Exiting " << ctor << " " << dtor << endl;
}