C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.11082 の関連記事表示

<< 0 >>
■11082  Re[1]: VB.NET)四次元配列を用いての2点間距離計測
□投稿者/ PATIO -(2007/12/06(Thu) 16:19:44)
    No11081 (Flowen さん) に返信
    > 今回お尋ねしたいのは、4次元配列の宣言時にオーバーフローすることです。
    >
    > Dim maxX = Edgebmp.Width - 1 'X座標の最大値
    > Dim maxY = Edgebmp.Height - 1 'Y座標の最大値
    >       Dim D(maxX,maxY,maxX,maxY) As Double '----ここでオーバーフローエラーが発生----'


    > エラーメッセージは
    > 「'System.OutOfMemoryException'のハンドルされていない例外が.exeで発生しました」
    > となります。
    >
    > 四次元の配列領域がでかすぎるのかと思い、条件わけをするなどして減らしたりしましたがうまくいきません。
    > エラーを出さずに処理を行う方法、または四次元に代わる方法をご教授いただけないでしょうか?

    えーと、実際に扱っている数値を使って試算してみましたか?
    例えば、32×32ピクセルの画像を考えたとして単純に計算すると32×32×32×32×8となって8388608なんて数値に
    これって8MBになっちゃいます。たった32ピクセル四方の画像で8MBです。
    後は推して知るべしで画像が大きくなれば、途方も無い数値になるのは当たり前です。

    で、本当に全ての計算結果を最後まで取っておく必要があるんでしょうか?
    部分毎にやるとかできませんか?
    もしくはファイルに書き出すとかもありえるでしょうけれど。
    最近のPCがいくらメモリをたくさん載せているからと言っても一つのプロセスが使えるメモリの上限は決まってますし、
    それでなくてもリソースと言うのは上限と言うのが存在します。
    全部メモリに展開できれば楽なのは間違いない話ですが、現実には限られた範囲内でしか無理です。
    少なくとも全てをメモリ上に展開するのは無理だと思うので処理方法を再検討された方が良いと思います。
記事No.11081 のレス /過去ログ25より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -