1

VS2010 から VS2012 に移行した直後、何度も同じクラッシュが発生します。コード C0000409 の BEX エラー。

static void LoadBonus()
{
    // Get Bonus EXP
    {
        sql::Statement* stmt = mysql_con_sps->createStatement();
        sql::ResultSet* res = stmt->executeQuery("SELECT `value` FROM `variables` WHERE `name` = 'expbonus'");

        if (res->next())
        {
            dwBonusEXP = res->getInt("value");
            delete stmt;
            delete res;
        }
        else
        {
            delete stmt;
            delete res;
            printf("MySQL Error: GetBonusEXP Failed.\n");
            WriteToFile("SQLLog.txt", "MySQL Error: GetBonusEXP Failed.\n");
            ExitProcess(0);
        }
    }

    // Get Bonus SP
    {
        sql::Statement* stmt = mysql_con_sps->createStatement();
        sql::ResultSet* res = stmt->executeQuery("SELECT `value` FROM `variables` WHERE `name` = 'spbonus'");

        if (res->next())
        {
            dwBonusSP = res->getInt("value");
            delete stmt;
            delete res;
        }
        else
        {
            delete stmt;
            delete res;
            printf("MySQL Error: GetBonusSP Failed.\n");
            WriteToFile("SQLLog.txt", "MySQL Error: GetBonusSP Failed.\n");
            ExitProcess(0);
        }
    }

    printf("[Server] BonusExp: %d  BonusSP: %d\n", dwBonusEXP, dwBonusSP);
}

この関数の最後で、コンパイラは /GS フラグに関連する呼び出しを追加します。C0000409 クラッシュがそこでクラッシュします。

なぜそれが起こるのですか?どうすれば修正できますか?

ありがとうございました。

4

0 に答える 0