のメソッドv_init()
の呼び出し中に、m_Lights=tmp;
行のメモリアクセス違反エラーが発生しました。 m_Lights
をm_LightsManager
のインスタンスで作成する必要はありませんか?このエラーが発生するのはなぜですか?ローカルメンバーとして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();
}
、オブジェクトm_LightsManagerが開始されたメモリ空間を重ねたそのソフトの他の部分にポインタを宣言しました'std :: memset(&tL、0、sizeof(Light));'? –
コードが正しくインデントされていれば、コードを読みやすくなります... – Borgleader
OT 'v_init'の理由は何ですか?コンストラクタを使用してください! –