一种c++单例嵌套导致的栈溢出问题

单例嵌套导致栈溢出问题

源代码

#include "Singleton.h"
#include 
using namespace std;
using namespace Loki;

class CA{
	CA(){
		Init();
	}
	void Init() {
		cout << cbInstance::instance().GetPath() << endl;
	}
	string GetData(){
		return data;
	}
private:
	string data;
};
typedef SingletonHolder caInstance;

class CB{
	CB(){
		cout << caInstance::instance().GetData() << endl;
	}
	string GetPath() {
		return path;
	}
private:
	string path;
};
typedef SingletonHolder cbInstance;


int main(int argc, char **argv) {
	caInstance::instance();
}

在上面这段代码中就会出现self 单例嵌套导致栈溢出。

分析

caInstance::instance()–>CA()-->CA::Init()–>cbInstance::instance().GetPath() -->CB()–>caInstance::instance().GetData()–>CA()

整就会导致单例嵌套,最终导致内存耗尽。

你可能感兴趣的:(C++)