メモリのアクセス違反のエラーについて
Posted: 2013年7月28日(日) 17:04
はじめまして。
現在ちょっとしたゲームを作っているのですが、メモリのアクセス違反のエラーが出ました。
いつもなら止まった場所とブレイクポイントでどこがダメなのかわかっていたのですが、今回うまくいかずお手上げ状態なため質問させていただきます。
上記コードで実行するとget_pos_char内のreturnで止まり、
hoge.exe の 0x010500d6 で初回の例外が発生しました: 0xC0000005: 場所 0x00620000 を読み込み中にアクセス違反が発生しました。
hoge.exe の 0x77b115de でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00620000 を読み込み中にアクセス違反が発生しました。
といったエラーが出ます。
厄介なことに毎回毎回発生するわけでなく、発生の原因を探すため色々やってみたのですが、エラーが起こる規則すらわかりませんでした。
どなたか原因を教えていただける方はいらっしゃいませんでしょうか?
現在ちょっとしたゲームを作っているのですが、メモリのアクセス違反のエラーが出ました。
いつもなら止まった場所とブレイクポイントでどこがダメなのかわかっていたのですが、今回うまくいかずお手上げ状態なため質問させていただきます。
class cTeam{
private:
cCharacter* member[12][3];
cCharacter* order_pos[9];
public:
~cTeam();
cTeam();
bool order();
private:
cCharacter* get_pos_char(string pos, cCharacter** order_temp, cCharacter** except);
};
cCharacter* cTeam::get_pos_char(string pos, cCharacter** order_temp, cCharacter** except){
const static string pos_name[9] = {
"投","捕","一","二","三","遊","左","中","右"
};
int pos_num = -1;
for(int i=0;i!=9;i++){
if(pos == pos_name[i])
pos_num = i;
}
if(pos_num == -1)
return NULL;
cCharacter* result = NULL;
for(int i=0;i!=36;i++){
if(order_temp[i] != NULL){
bool except_flag = false;
for(int k=0;k!=9;k++){
if(except[k] == order_temp[i]){
except_flag = true;
break;
}
}
if(order_temp[i]->pos[0] == pos_name[pos_num] && except_flag == false){
if(result == NULL){
result = order_temp[i];
}else{//このelse内をコメントアウトしても同じ
int result_prop[9];
int temp_prop[9];
result->proper(result_prop);
order_temp[i]->proper(temp_prop);
if(result_prop[pos_num] < temp_prop[pos_num])
result = order_temp[i];
}
}
}
}
return result;
}
bool cTeam::order(){
cCharacter* order_temp[36];
for(int i=0;i!=3;i++){
for(int j=0;j!=12;j++){
order_temp[j+i*12] = member[j][i];
}
}
for(int i=0;i!=9;i++){
order_pos[i] = NULL;
}
order_pos[0] = get_pos_char("投", order_temp, order_pos);
order_pos[1] = get_pos_char("捕", order_temp, order_pos);
order_pos[2] = get_pos_char("一", order_temp, order_pos);
order_pos[3] = get_pos_char("二", order_temp, order_pos);
order_pos[4] = get_pos_char("三", order_temp, order_pos);
order_pos[5] = get_pos_char("遊", order_temp, order_pos);
order_pos[6] = get_pos_char("左", order_temp, order_pos);
order_pos[7] = get_pos_char("中", order_temp, order_pos);
order_pos[8] = get_pos_char("右", order_temp, order_pos);
return true;
}
hoge.exe の 0x010500d6 で初回の例外が発生しました: 0xC0000005: 場所 0x00620000 を読み込み中にアクセス違反が発生しました。
hoge.exe の 0x77b115de でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00620000 を読み込み中にアクセス違反が発生しました。
といったエラーが出ます。
厄介なことに毎回毎回発生するわけでなく、発生の原因を探すため色々やってみたのですが、エラーが起こる規則すらわかりませんでした。
どなたか原因を教えていただける方はいらっしゃいませんでしょうか?