掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
実行時エラーの原因? (ID:55409)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ネロです。プログラム初心者なのでエラーの対処がうまくいきません。 ビルドやコンパイルの時にはエラーは0なんですが、プログラムを実行して、ある関数を呼び出すところにくると、「問題が発生したため”プログラム名”を終了します。ご不便をおかけして申し訳ありません。」と書かれたダイアログボックスが出てきて、プログラムが終了してしまいます。そしてダイアログボックスの”デバッグ”ボタンをクリックすると、”0x00405232”の命令が“0x00019000”のメモリを参照しました。メモリが"read"になることはできませんでした。と書かれたダイアログボックスがでてきます。こういったエラーの原因としてどのようなことが考えられるのでしょうか?教えてください。 あやしいと思われる関数 この関数はあらかじめ2値化された画像をC2[][]という配列に格納して、ハフ変換を行う関数です。この関数を呼び出すと、エラーになってしまいます。 void Hough_2() { int i,j,k,l; int x,y; int Theta,Rho; int ThetaMax,RhoMax,CounterMax; double PIK; PIK=3.1415926/1024; //sinとcosのテーブルを用意する(0〜πラジアン) double *sn,*cs; sn=new double[1024]; cs=new double[1024]; for(i=0;i<1024;i++){ sn[i]=sin(PIK*i); cs[i]=cos(PIK*i); } //二乗のテーブルを用意する DWORD sq[320]; for(i=0;i<=320;i++) sq[i]=i*i; //Counter[1024][1000]用のメモリ領域を確保 WORD* Counter[1024]; for(i=0;i<1024;i++) Counter[i]=(WORD*)GlobalAlloc(GPTR,1000*sizeof(WORD)); //Hough変換 for(y=0;y<Y_SIZE;y++) for(x=0;x<X_SIZE;x++) if(c2[y][x]==0){ for(Theta=0;Theta<1024;Theta++){ Rho=int(x*cs[Theta]+y*sn[Theta]); Counter[Theta][Rho+500]++; } } //Hough逆変換 for(k=0;k<100;k++){ CounterMax=0; for(Theta=0;Theta<1024;Theta++) for(Rho=-500;Rho<500;Rho++) if(Counter[Theta][Rho+500]>CounterMax){ CounterMax=Counter[Theta][Rho+500]; ThetaMax=Theta; RhoMax=Rho; } if(ThetaMax!=0){ //xを変えてyを描く for(x=0;x<X_SIZE;x++){ y=(RhoMax-x*cs[ThetaMax])/sn[ThetaMax]; if(y>Y_SIZE-1 || y<0) continue; c2[y][x]=0; } } if(ThetaMax!=512){ //yを変えてxを描く for(y=0;y<Y_SIZE;y++){ x=(RhoMax-y*sn[ThetaMax])/cs[ThetaMax]; c2[y][x]=0; } } for(i=-20;i<=20;i++) for(j=-10;j<=10;j++){ if(ThetaMax+i<0) ThetaMax+=1024; if(ThetaMax+i>1023) ThetaMax-=1024; if(RhoMax+j<-500 ||RhoMax+j>499) continue; Counter[ThetaMax+i][RhoMax+500+j]=0; Counter[ThetaMax+i][-RhoMax+500+j]=0; } } delete[] sn; delete[] cs; for(i=0;i<1024;i++) GlobalFree(Counter[i]); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.