我会开始学习 C++,但我不明白这是内存泄漏还是某种巫术?!
我有一些“单例”类(仅用于演示):
#include <iostream>
using namespace std;
class S {
private: S() {
cout << "S::S" << endl;
}
public: static S* instance() {
static S* i;
if(i == NULL) {
cout << "Create S" << endl;
i = new S;
}
return i;
}
public: virtual ~S() {
cout << "S::~S" << endl;
}
public: void a() {
cout << "S::a" << endl;
}
};
int main() {
// call some method
S::instance()->a();
// delete pointer to instance (no reason, because I'm curious)
delete S::instance();
// call method again
S::instance()->a();
return 0;
}
这些的输出是:
Create S
S::S
S::a
S::~S
S::a
所以我的问题是:为什么在调用析构函数后,静态变量中仍然有类 S 的工作副本?
更新:感谢您的回答。我意识到我的错误。请原谅我的打扰。