アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
以下のプログラムで s1 = "3ba9e...."の時、

for(i=0; i < (int)(s1Len/2); i++)
{
  cc = s1.GetAt(2*i);
  c2 = s1.GetAt(2*i+1);
}

1回目 cc=3 c2=0, 2回目 cc=a c2=b ・・・
という順序で取られていきます。
不思議な事にデバッグビルドでは正しく取られるのに、リソースビルドでこの現象がおきるのです。
解決策、あるいは回避策をご存知の方、ご教授願えないでしょうか。困っています。
ちなみに c2 = s1.GetAt(2*i+3) としたところ、1回目だけが正しく取れず cc=3 c2=0, 2回目以降は正しく取れました。

A 回答 (1件)

 うーん,わたしなら,OutputDebugString()とかで,i, s1, cc, c2 等のトレースを取りながら実行してみます.前スレによると,これはあるコードの一部を抜き出したもののようなので,他のコードが悪影響している可能性があるからです.



# GetAt() がリリース時に範囲チェックを行なわないのは,単純に速度を重視したためでしょう.

参考URL:http://www.nitoyon.com/vc/tutorial/debug/win32.htm

この回答への補足

回答ありがとうございます。
チェックした結果、ccとc2のアドレスが隣り合っていた事 + '\0'が終端に確保されていなかった為に、変数使用側で誤作動を起こしていたと思われます。失礼しました。

補足日時:2006/05/08 08:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています