在方法v_init()
在Algo::Init()
的調用過程中,線路m_Lights=tmp;
上有內存訪問衝突錯誤。不應該在m_LightsManager
的實例化處創建映射m_Lights
?爲什麼我有這個錯誤?使用std :: map作爲本地成員的內存訪問衝突
class LightManager
{
private:
std::map<sint32,Light> m_Lights;
public:
LightManager (void);
~LightManager (void);
void v_init();
};
LightManager ::LightManager (void)
{
}
LightManager ::~LightManager (void)
{
}
void LightManager ::v_init()
{
Light tL;
std::memset(&tL,0,sizeof(Light));
std::map<sint32,Light> tmp;
tmp.insert(std::pair<sint32,Light> (-1,tL));
m_Lights=tmp;
}
class Algo
{
private:
LightsManager m_LightsManager;
....
public:
Algo();
void Init();
};
Algo::Algo()
{
Init();
}
void Algo::Init()
{
m_LightsManager.v_init();
}
什麼是'Light',爲什麼要這樣'的std :: memset的(TL,0,的sizeof(光));'? –
如果代碼正確縮進,代碼會更容易閱讀...... – Borgleader
OT'v_init'的原因是什麼?使用構造函數! – 2017-10-10 11:37:21