私は現在 C++ で作業しており、この課題に直面しています。ヘッダーファイルの私のクラスのコードは次のとおりです。
class PID
{
private:
int PID;
int total;
public:
PID(); // Constructor
int returnPID(); // Returns PID.
};
cpp ファイルのコード宣言は次のとおりです。
PID::PID()
{
PID=INT_MAX;
total=0;
}
int PID::returnPID()
{
return PID;
}
そして、クラス PID のオブジェクトへのポインターを含むテーブルの主な宣言と初期化は次のとおりです。
PID* table[1000000];
for (int i=0; i<1000000; i++)
{
table[i]=new PID;
}
したがって、これは上で作成したコンストラクターを使用して PID を MAX_INT に設定すると思います。すべての初期化内で returnPID を使用して table[i].PID のコンテンツにアクセスしようとすると、次のようにうまく機能します。
for (int i=0; i<1000000; i++)
{
table[i]=new PID;
int display=table[i]->returnPID();
cout<<display<<endl;
}
この問題は、テーブル [i] の外部および初期化後にコンテンツにアクセスしようとすると発生します。メインがクラッシュし、エラーとして数字 (-1073741571) が返されます。メインからのコマンドは1つも実行されていないようです。問題を再現すると思われるコードのサンプルを次に示します。
for (int i=0; i<1000000; i++)
{
table[i]=new PID;
}
for (int i=0; i<1000000; i++)
{
int display=table[i]->returnPID();
cout<<display<<endl;
}
私はこれに2時間以上取り組んできましたが、解決策はありませんでした.論理的ではないようです. 誰にもこれについて説明がありますか?
編集:スポット数が 1.000.000 未満のテーブルはすべて正しく機能します。関係はまだわかりませんが、これと関係があるのかもしれません。