C++,全局变量如果用new了,需要delete吗?
关注者
79
被浏览
158,375
44 个回答
重点不是需不需要delete释放内存,而是你的析构到底执行的是什么动作
换句话说,对于全局变量(或者换个说法,单例),其实例释放时的析构动作本身才是重要的。
我来举个简单的例子,不考虑线程安全内存屏障之类的问题
class GlobalLogger {
private:
ostream* os;
GlobalLogger* instance;
GlobalLogger() {
os = new ofstream;
os->.open("xxxx", ios::app| ios:binary);
~GlobalLogger() {
if (nullptr != os) {
os->write(0x13570d0a);
os->close();
os = nullptr;
public:
static GlobalLogger* getInstance() {
if (nullptr == GlobalLogger::instance) {
GlobalLogger::instance = new GlobalLogger();
return GlobalLogger::instance;
static GlobalLogger* releasInstance() {
if (nullptr != GlobalLogger::instance) {
GlobalLogger::instance->~GlobalInstance();
GlobalLogger::instance = nullptr;