リリースビルドでの動作不良

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kaiten

リリースビルドでの動作不良

#1

投稿記事 by kaiten » 15年前

自力で解決できる気がしないので質問させていただきます。
息抜きにシーン遷移のプログラムを作っていたのですが、デバッグビルドでは正常に動くのにリリースビルドだとアクセス違反が起こるという状況になってしまいました。
デバッグ情報を付加して試してみたところxtree内にあるinsertで問題が起きているようです。
エラーが発生するのはGame.cpp内のvoid GameSystem::StringInit()のSET_STRING(Sceneitle);です。マクロの内部でSetStringChange<Sceneitle>("Sceneitle");を呼んでおり、この時にアクセス違反が起きているようです。
ソースはまとめてzipにして添付します。当方の環境に問題があるのかそれ以外なのかすらわからないのでこのようにさせていただきました。
考えうる原因とその対処法を教えていただけると幸いです。
環境はvista、VC++2008EESP1、DxLib使用です。

別件なのですが、ResEditを使って画像をリソース化したところ奇妙な画像になってしまったのでこちらも教えていただけると幸いです。画像は少なくともデバッグ版なら見れると思います。右側が正常な画像です。


追伸:重すぎたのでソースのみzipにして添付しました 画像

MNS

Re:リリースビルドでの動作不良

#2

投稿記事 by MNS » 15年前

void Change<SceneEnd>(){stack.Change(new SceneEnd(manager) );}
この関数について、例外処理を組み込んでみて、newの確保に失敗していないかどうか、調べてみてください。

Justy

Re:リリースビルドでの動作不良

#3

投稿記事 by Justy » 15年前

 えーと、DxLibPCH.hで _SECURE_SCL定義をしていますが、これをするなら
全てのソースで行って下さい。

 xtreeの insertということは多分 std::mapだと思いますが、これがインスタンス化された
ときのソースと、実際に使用しようとしたときのソースでこの定義があるかないかで、
std::mapの中身が変わります。

 そこで insertを呼び出そうとしておかしくなったのではないでしょうか。

CRT セキュリティ強化対応: RH1FFT blog
http://cessna373.asablo.jp/blog/2008/01/03/2543708

kaiten

Re:リリースビルドでの動作不良

#4

投稿記事 by kaiten » 15年前

おかげさまで解決しました
本題は解決したので解決マーク付けておきます。

>>MNSさん
試してみましたがnewの例外は出ていなかったようです。
例外処理は苦手で避けていたのですが今後はまずやってみようと思います。ありがとうございました。

>>Justyさん
_SECURE_SCLを取り除いてみたところ正常に動作しました。説明の載っているページまでありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る