コンパイラ:Visual Studio 2013
OS :Windows8.1(64bit)
言語 :C++
以下のプログラムを実行すると
P->Process(i);の関数を実行した際に46行目でメンバ変数P->Noを参照しようとし、
ハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。
というアクセス違反の警告が出てプログラムが最後まで稼働できません。
アクセス違反を回避し処理を続行させるにはどうすればよいのでしょうか?
Source.cpp
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include"Header.h"
Myclass *P[256];
int Count = 0;
Myclass::Myclass(){
No = Count;
printf("No = %d\n", No);
Count++;
x = 8;
}
Myclass::~Myclass(){
}
int End = 0;
int p;
int main(void){
while (End == 0){
printf("クラスを作る?yesなら1/noなら0\n");
scanf("%d", &p);
if (p == 1){
P[Count] = new Myclass;
printf("%dつめのクラス\n", Count);
}
else{
printf("もう十分作った\n");
End = 1;
}
}
for (int i = 0; i < Count - 1; i++){
P[i]->Process(i);
printf("%dつめのクラスを崩した\n", P[i]->No);
delete P[i];
}
getchar();
return 0;
}
void Myclass::Process(int i){
printf("!!!!!%d\n",P[i]->No);
}