奇妙な問題が発生しています。動的に作成された2D配列Contentがあり、高さは_h、幅は_wです(私の実装では、行が最初のパラメーターで、列が2番目であり、コンテキストで意味があります)。2つのインデックスが範囲外になる可能性があります。これは仕様によるものであり、範囲外の場合、インデックスは配列に「ラップアラウンド」されます。
Content[v.iget()%_h][u.iget()%_w];
vとuは私自身のクラスのオブジェクトです。内部には__int64値があり、iget()は次のようになります。
return value>>precision;
通常の32ビット整数を返します。このint値を高さまたは幅で%で「ラップ」します。明らかに、余りは常に0 <=r<maxです。したがって、この%操作は、起こりうる範囲外の状況に対する保護も提供しますが、この行で正確にアクセス違反が発生することがあります。vとuの値を見ると、-7753978124のようなものです。実際、私のコンテキストで負の数が発生することは想定されていません(したがって、原因をまだ探していません)が、とにかく、。 iget()はそれを通常の整数に変換し、%_ hまたは%_wはそれを境界に入れる必要がありますが、代わりにアクセス違反が発生します。どうすればこれが可能ですか?