私はを極端にと非常に古い(25年!)プログラムをCからC++に変換しています。負の数で配列にアクセスする!
さまざまな整数インデックスを使用してグローバルな1次元UBYTE配列にアクセスする(非常に多くの)場所が多数あります。場合によっては、このインデックスは負の値を持つことがあります。
時々、このケースを閉じ込めて何も間違っていないことを確認しましたが、ベルトとブレースの尺度として、配列の直前にもう1つのメモリチャンクがあることを確認していました負の数の条件をトラップするために誤って省略した場合でも、配列アクセスで正解が引き出されるような適切な値があります。これは実際には長年にわたりうまく機能しました。
しかし、C++の下では、負の数で配列にアクセスするのとは異なった振る舞いをしているようですが、今はプログラムがうまく動作していないようです。処理されていない負の数の1つのケースを修正し、プログラムは正常に動作しているように見えますが、私はすべての負の数をトラップしておらず、先に問題があるかもしれないと心配しています。
私の質問は、実行時に負のインデックスを持つ配列にアクセスするインスタンスを検出する方法はありますか?誰かが答えを出すことができれば、私は感心するでしょう。あなたがかなり確信しているなら、自動化された方法でそれを行うことはできません。
私は本当にC++のプログラマーではないと付け加えておきます。今まで私がしてきたのは、C++コンパイラでプログラムをコンパイルするための絶対的な最小限度(ほとんど何もない)です。あなたの答えがファンシーな "エキスパートのみ、C++のソリューション"を含んでいる場合は、1音節の言葉で説明してください。
負の値の配列にアクセスすることはできましたが、私はしませんでした! –
動作する場合は、手を触れないでください。 –
動作する場合は、改善してください。 –