もしかしたら自分の基本的な知識が足りないのかもしれませんが
Effectというクラスのデストラクタで
「HEAP CORRUPTION DETECTED」
とのエラー画面が出て止まってしまいます
でるタイミングはデストラクタが終わった時です
また、リリースでビルドすると、ログで出してみても場所不定で応答なしになります
Unionはグローバルなクラスなどを管理するクラス
Logはテキストファイルにログを書き入れるクラスです
https://www.dropbox.com/s/7hmvo0bbj9g5a ... 6.bmp?dl=0
エラー画面のスクリーンショットは、画像アップローダーが扱えなかったので、
ファイルでドロップボックスにあげましたorz
Effect.h
class Effect
{
private:
friend Union;
Effect(void);
virtual ~Effect(void);
void Update();
void Draw();
list<aEffect>mE;
list<aEffect>::iterator ite;
sEffect* mEffect[EFFECT_MAX];
int EmptySearch(eEffect);
void EffectDeleteCalc();
void EffectDelete(int);
//エフェクト種類別
void (Effect::*aEffCalc[EFFECT_KIND_MAX])(aEffect*);
void (Effect::*sEffCalc[EFFECT_KIND_MAX])(sEffect*);
//敵消滅
int hImg_Effect_del[5];
void aEffCalc0(aEffect*);
void sEffCalc0(sEffect*);
//爆発(中)
int hImg_Effect_Baku[5];
void aEffCalc_Baku(aEffect*);
void sEffCalc_Baku(sEffect*);
//ボム
int hImg_Bomb[5];
void aEffCalc_Bomb(aEffect*);
void sEffCalc_Bomb(sEffect*);
//ワープ
int hImg_Warp1[4];
void aEffCalc_Warp1(aEffect*);
void sEffCalc_Warp1(sEffect*);
//暗転
int hImg_Black;
void aEffCalc_Black(aEffect*);
void sEffCalc_Black(sEffect*);
public:
void EnterEffect(eEffect cKind);
void EnterEffect(eEffect cKind,double cX,double cY);
void EnterEffect(eEffect cKind, double cX, double cY,int cTill,int brt);
};
Effect::Effect(void)
{
for(int i=0;i<EFFECT_MAX;i++){
mEffect[i]=nullptr;
}
//敵消滅
LoadDivGraph("rc/effect/death/hit_effect.png",5,5,1,140,140,hImg_Effect_del);
sEffCalc[eEff_Del]=&Effect::sEffCalc0;
aEffCalc[eEff_Del] = &Effect::aEffCalc0;
//ボム
hImg_Bomb[0] = LoadGraph("rc/effect/PlyBomb/PlyBombW.png");
hImg_Bomb[1] = LoadGraph("rc/effect/PlyBomb/PlyBombH.png");
hImg_Bomb[2] = LoadGraph("rc/effect/PlyBomb/bom0.png");
hImg_Bomb[3] = LoadGraph("rc/effect/PlyBomb/bom1.png");
hImg_Bomb[4] = LoadGraph("rc/img/player/tati_bom.png");
sEffCalc[eEff_Bomb]=&Effect::sEffCalc_Bomb;
aEffCalc[eEff_Bomb] = &Effect::aEffCalc_Bomb;
//爆発中
LoadDivGraph("rc/effect/bomb/ice.png",8,8,1,120,120,hImg_Effect_Baku);
sEffCalc[eEff_Baku]=&Effect::sEffCalc_Baku;
aEffCalc[eEff_Baku] = &Effect::aEffCalc_Baku;
LoadDivGraph("rc/effect/normal/warp1_320.png", 6, 1, 6, 320, 240,hImg_Warp1);
aEffCalc[eEff_Warp1] = &Effect::aEffCalc_Warp1;
sEffCalc[eEff_Warp1] = &Effect::sEffCalc_Warp1;
//暗転用の黒
hImg_Black = LoadGraph("rc/effect/Black.png");
sEffCalc[eEff_Black] = &Effect::sEffCalc_Black;
aEffCalc[eEff_Black] = &Effect::aEffCalc_Black;
}
Effect::~Effect(void)
{
Union* gUnion = Union::GetInstance();
GlobalLog* gLog = gUnion->GetLog();
gLog->PutBad("Effectデストラクタ開始");
mE.clear();
for(int i=0;i<EFFECT_MAX;i++){
if (mEffect[i] != nullptr){
delete mEffect[i];
mEffect[i] = nullptr;
}
}
gLog->PutBad("Effectデストラクタ完了");
}//ここ
//ここ のところです。
なにか足りない点がありましたら答えます。
本当にわかりづらくてすみませんが、ご教授くださいm(_ _)m