int uchiwake[10]; bool sansyokudoujun(void) /* 三色同順 */ { cout << "sansyokudoujun" << endl; int tmp[34]; memset(tmp, 0, sizeof(tmp)); for (int i = 0; i < 10; i += 2) { switch (uchiwake[i]) { case SYUNTU: case CHII: tmp[uchiwake[i + 1]]++; break; default: break; } } cout << "sansyokudoujun2" << endl; for (int i = 0; i < 9; i++) { if (tmp[i] && tmp[i + 9] && tmp[i + 18]) return true; } cout << "sansyokudoujun3" << endl; return false; }
c++で麻雀の役判定をしています。
たまに**Stack around the variable 'tmp' was corrupted.**とエラーを吐いてしまいます。
uchiwakeの中身は偶数にメンツの状態、奇数に牌番号があらかじめ入っています。
順子やチーの場合そのメンツの中で一番低い牌番号が入っています。
SYUNTUやCHIIはenumです。
pybind11でビルドしてつかっているのでどの行数でのエラーかまではわかりませんが、
エラーのとき、cout << "sansyokudoujun3" << endl;
までは出力できています。
どこが原因なのかわかりません。ご回答お待ちしております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/17 03:26 編集
2020/02/17 03:22
2020/02/17 03:23
2020/02/17 03:29
2020/02/17 03:31
2020/02/17 03:40