C++でおこったアクセスエラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
つくばさん
記事: 22
登録日時: 8年前

C++でおこったアクセスエラー

#1

投稿記事 by つくばさん » 8年前

c++でエラーが発生し解決方法がわからなかったため質問させていただきます。
今回 VC++2010コードを組んでいたら次のところでアクセスエラーが発生しました。
エラーは次のようです

Test.exe の 0x005e7c66 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。

コード:

PlayerShotMgr::Init(){
for(int i=0;i<300;i++){
PlayerShot[i]=nullptr;//ここでエラー
}
}
PlayerShotMgrは次のように宣言しています。

コード:


class PlayerShotMgr{
private:
CPlayerShot* mPlayerShot[300];
public :
void Update();
void Draw();
void Init();
void Fin();
}
CPlayerShotがおかしいのと思いint型に変えても変わりませんでした。
nullptrをうまく代入するにはどうすればよいのでしょうか。
c++,プログラミング共に初心者ですがご協力お願いします。
PCにはあまりさわれないので返信は遅くなります。すみません

アバター
プラム
記事: 164
登録日時: 10年前
住所: 東海地方

Re: C++でおこったアクセスエラー

#2

投稿記事 by プラム » 8年前

つくばさん さんが書きました:c++でエラーが発生し解決方法がわからなかったため質問させていただきます。
今回 VC++2010コードを組んでいたら次のところでアクセスエラーが発生しました。
エラーは次のようです

Test.exe の 0x005e7c66 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
インデントがされてませんがそれは置いといて。

そのエラーは、コンパイルエラーは出ないが、常識の範囲では実行できないコードが実行されたときに強制終了され、それと同時に出るエラーだと思います。
つくばさん さんが書きました: rは次のように宣言しています。

コード:


class PlayerShotMgr{
private:
CPlayerShot* mPlayerShot[300];
public :
void Update();
void Draw();
void Init();
void Fin();
}
[/quote][/quote]

このクラスの中に「PlayerShot」という値は有りませんが、どこにあります?
それと。nullptrではなく、NULLにしてみたらどうですか?

僕はC言語はわかりますが、C++は少ししか触れないのでこれくらいのアドバイスしかできません、すみません。
最後に編集したユーザー プラム on 2016年3月14日(月) 20:49 [ 編集 1 回目 ]

つくばさん
記事: 22
登録日時: 8年前

Re: C++でおこったアクセスエラー

#3

投稿記事 by つくばさん » 8年前

ノウルさんありがとうございます。
すみませんコードは本来

コード:

class PlayerShotMgr{
private:
CPlayerShot* PlayerShot[300];//mは必要ありませんでした。
public :
void Update();
void Draw();
void Init();
void Fin();
}
また
NULLを入れても結果に変わりはありませんでした。
ポインタでなく

コード:

PlayerShotMgr::Init(){
test=0;
}

コード:

class PlayerShotMgr{
private:
int test;
public :
void Update();
void Draw();
void Init();
void Fin();
}
としても同じ現象が起こりました。
どういうことなのでしょう?

アバター
tk-xleader
記事: 158
登録日時: 13年前
連絡を取る:

Re: C++でおこったアクセスエラー

#4

投稿記事 by tk-xleader » 8年前

PlayerShotMgr::Initを呼んでいる側に問題があるのではないでしょうか?
たぶん、未初期化のPlayerShotMgr*型の変数でInitを呼び出している箇所があると思います。そこに適切な初期化を施せば直るでしょう。

つくばさん
記事: 22
登録日時: 8年前

Re: C++でおこったアクセスエラー

#5

投稿記事 by つくばさん » 8年前

tk-xleaderさん ありがとうございました、
class を持っている奴の初期化で class の初期化をわすれていました
初期化したら無事直りました。
ポインタを使うときは初期化を忘れないということで解決にさせていただきます。
みなさんありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る